目录
第1章KingbaseES性能优化1
1.1性能优化的基本概念1
1.2系统性能规划2
1.3数据库系统性能问题定位3
1.4数据库服务器性能调优4
1.4.1定义性能目标4
1.4.2定位资源瓶颈5
1.4.3分析优化点5
1.4.4实施并测试性能6
1.5数据库性能基准测试7
1.6本书测试实验环境9
第2章KingbaseES性能优化基础10
2.1KingbaseES体系结构10
2.1.1进程结构10
2.1.2内存结构12
2.1.3存储结构13
2.1.4数据库连接16
2.1.5SQL语句的执行过程18
2.2KingbaseES并发控制18
2.2.1多版本并发控制19
2.2.2数据库锁19
2.3KingbaseES日志系统21
2.3.1日志系统组件21
2.3.2日志系统的相关配置22
第3章操作系统性能诊断24
3.1概述24
3.2确定系统性能瓶颈25
3.3CPU和内存资源分析26
3.4磁盘资源分析28
3.5网络资源分析29
第4章数据库性能诊断31
4.1概述31
4.2日志分析工具kbbadger 33
4.2.1配置系统运行日志33
4.2.2生成性能报告34
4.3动态性能视图36
4.3.1概述36
4.3.2统计信息收集子系统38
4.3.3数据库实例运行信息39
4.3.4TOP SQL语句信息41
4.3.5SQL语句运行信息44
4.3.6数据库中的常规锁信息45
4.3.7数据库对象运行信息46
4.4自动负载信息库KWR48
4.4.1KWR概述48
4.4.2KWR快照48
4.4.3生成KWR报告49
4.4.4理解数据库时间模型50
4.4.5解读KWR报告53
4.4.6KWR DIFF报告62
4.5数据库调优建议工具KDDM64
4.5.1生成KDDM报告64
4.5.2解读KDDM报告65
4.5.3应用KDDM建议70
4.6活跃会话历史报告KSH71
4.6.1KSH基本概念71
4.6.2生成KSH报告71
4.6.3解读KSH报告73
第5章数据库实例优化75
5.1性能分析概述75
5.2等待事件瓶颈分析与优化76
5.2.1I/O等待事件分析与优化76
5.2.2轻量级锁等待事件分析与优化79
5.2.3常规锁等待事件分析与优化81
5.2.4通信等待事件分析与优化82
5.3CPU瓶颈分析与优化83
5.3.1绑核技术83
5.3.2使用执行计划缓存83
5.4数据库实例优化实践85
5.4.1第一轮测试分析85
5.4.2第二轮测试分析89
5.4.3第三轮测试分析92
第6章SQL语句优化基础94
6.1查询处理概述94
6.2查询编译器95
6.3查询优化器99
6.3.1概述99
6.3.2逻辑优化100
6.3.3物理优化102
6.3.4统计信息104
6.3.5扩展统计信息107
6.4查询执行器109
第7章SQL查询执行计划111
7.1获取执行计划111
7.1.1使用explain命令111
7.1.2使用数据库开发管理工具KStudio114
7.1.3使用auto_explain插件114
7.2单表查询115
7.2.1全表扫描116
7.2.2索引扫描116
7.2.3位图扫描118
7.2.4仅索引扫描119
7.2.5排序119
7.2.6去重121
7.3多表连接查询122
7.3.1嵌套循环连接122
7.3.2归并连接124
7.3.3哈希连接124
7.3.4外连接126
7.3.5多表连接的执行计划127
7.4统计分析查询128
7.4.1聚集查询128
7.4.2窗口函数130
7.5集合查询131
7.6子查询133
7.6.1子查询概述133
7.6.2派生表134
7.6.3标量/行子查询137
7.6.4存在性检测子查询140
7.6.5集合比较子查询142
7.6.6WITH子句146
7.7层次查询148
7.8阅读执行计划152
第8章优化SQL执行计划156
8.1分析执行计划156
8.2使用SQL优化建议器158
8.3收集统计信息160
8.4调整系统配置参数162
8.4.1代价计算相关的参数162
8.4.2操作相关的参数163
8.4.3内存相关的参数168
8.4.4与逻辑优化相关的参数168
8.5使用Hint178
8.5.1启用Hint178
8.5.2使用Hint指定表扫描方法179
8.5.3使用Hint指定连接算法180
8.5.4使用Hint指定连接顺序182
8.5.5使用Hint 指定实现聚集函数的算法184
8.5.6使用Hint 修正基数估算184
8.5.7使用Hint 注意事项185
8.6使用索引188
8.6.1索引概述188
8.6.2Btree索引188
8.6.3其他索引类型197
8.6.4索引与列转换202
8.6.5索引与字符串匹配204
8.6.6索引维护208
8.7使用并行209
8.7.1并行执行概述209
8.7.2并行执行算法211
8.7.3配置并行执行220
8.8使用查询映射223
8.8.1查询映射概述223
8.8.2查询映射的使用方式223
第9章编写高效的SQL语句227
9.1SQL语句中的谓词227
9.1.1多个谓词227
9.1.2OR连接的谓词228
9.1.3谓词推导230
9.1.4互相矛盾的谓词233
9.2连接操作234
9.2.1连接谓词与选择谓词234
9.2.2去除不必要的连接237
9.3聚集与连接操作238
9.4子查询240
9.4.1派生表240
9.4.2标量子查询242
9.4.3IN和EXISTS查询245
9.4.4使用Window函数优化子查询249
9.4.5编写不规范的子查询252
9.5集合操作253
9.6结果集行数有限制的查询257
9.7临时表与CTE260
9.8SQL中的函数262
9.8.1函数的执行性能262
9.8.2函数的稳定态266
9.9避免表的多次扫描268
第10章数据库对象物理设计优化271
10.1表设计271
10.1.1表中列的数据类型271
10.1.2表的属性参数275
10.1.3表中数据的顺序275
10.2使用分区277
10.2.1分区表概述277
10.2.2创建分区表278
10.2.3创建分区索引282
10.2.4操作分区表283
10.2.5设计分区表292
10.2.6分区设计实践293
10.3使用物化视图294
参考文献297
