- 博客(5)
- 收藏
- 关注
原创 一例MergeJoin引发的性能问题
这是一例在处理客户现场问题过程中,遇到的比较特殊的案例。客户新上线的系统,一个存储过程运行超过12个小时还未结束,需要协助排查。由于是生产系统,我们无法使用 explain analyze 去验证每条SQL(大量 DML 语句),而只能通过explain来看SQL的执行计划 ,以避免修改生产数据。由于只能看执行计划,而不能看实际的执行时长,因此,初始排查执行计划并未发现问题。别无他法,只能协调用户修改存储过程增加时间日志打印,精确定位SQL卡点,终于发现了问题所在。为什么这个问题会这么难以发现了?
2025-01-22 16:18:46
1330
原创 PostgreSQL 与 Oracle 对于 where 条件应用顺序规则差异
不同的 where 条件过滤效果是不同的,过滤效果佳的条件优先应用可以减少整体CPU消耗,因为条件1过滤效果越好,条件2需要评估的tuple数越少。以下通过例子展示 PG17 与 Oracle19 在where 条件评估顺序方面的差异。
2025-01-21 17:27:32
332
原创 Immutable 与 Stable 函数态行为差异比较
Stable函数不能修改数据库,单个Query中所有行给定同样的参数确保返回相同的结果。这种稳定级别允许优化器将特定场景下多次函数调用转换为一次。在索引扫描的条件中使用这种函数是可行的,因为索引扫描只计算一次比较值(comparisonvalue),而不是每行都计算一次。Immutable函数不能修改数据库,在任何情况下,只要输入参数相同,返回结果就相同。这种级别的函数,优化器可以提前进行计算,在查询过程中作为常量参数。
2025-01-20 11:25:40
1505
原创 函数稳定态影响索引使用及分区表剪枝
PostgreSQL函数有三种稳定态,具体可以看函数稳定态影响SQL索引使用、分区剪枝。本文通过例子展示稳定态对于索引使用的影响。
2025-01-20 09:54:03
208
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人