关键字:
KingbaseES、SQL执行、SQL处理、调优
一、SQL语句的执行过程总结
1.FROM语句选择要操作的数据对象;
2.进行JOIN ON的连接筛选;
3.WHERE的条件筛选;
4.执行分组聚合GROUP BY(聚集函数等)或HAVING筛选分组;
5.计算相关的表达式,执行SELECT得到字段列表;
6.执行DISTINCT去重;
7.进行ORDER BY排序,LIMIT筛选;
8.返回排序结果TOP。
二、SQL语句的处理过程总结
1.查找缓存阶段:当客户端的SQL语句发送给服务端时,首先会查看缓存,如果命中缓存则直接返回结果;否则进入下一阶段;
2.词法语法分析阶段:检查SQL语句是否符合语法词法规则,转化为解析树;
3.语义检查阶段:检查解析树是否符合语义规则,转化为查询树;
4.查询重写阶段:如果查询书中设计视图或者规则,重写为查询树;
5.查询优化阶段:经过逻辑优化和物理优化,生成最优的执行计划;
6.查询执行阶段:按照执行计划,调用执行引擎进行执行;
7.返回结果阶段:返回结果给客户端,并缓存到缓存中。
三、谓词IN与EXISTS的主要区别
-
EXISTS谓词是先计算外表t1的数据,然后循环比较t1与t2表的数据,如果相等,则留下t1的该条记录;否则删掉该记录。因此,当t1小于t2时用EXISTS较好。
-
IN谓词则将t1 t2全部取出,先看子查询的结果,再将t1 t2表作笛卡尔积,然后筛选出符合条件的。当t2小于t1时用IN较好。
四、KingbaseES数据库调优手段
1.数据库系统空间整理:
- 减少磁盘空间占用
- 提高扫描速度 -提高缓存效率
2.数据库统计信息更新:
- 更准确的统计信息
- 更准确的查询计划
- 更短的响应时间
3.重建某些表的索引:
- 减少磁盘空间占用
- 清除废旧的元组记录
- 更准确的统计信息
- 更准确的查询计划
4.调整系统参数:
- 系统共享缓冲区大小
- 系统工作内存大小
- 系统日志缓冲区大小
- 统计信息的粒度等
5.监测系统性能的参数:
- 系统封锁状况
- 系统进程状态
- SQL语句执行时间
- 先确定瓶颈问题,避免做无用功
- 优化瓶颈能改善整个系统的响应时间
6.创建所需要的索引:
- 索引扫描可能比全表扫描更为有效
- 新建的索引可能比现有索引更适用
- 可以创建函数索引
- 可以创建B树索引或HASH索引
7.重点解决出现性能问题的 SQL 语句:
- 先确定瓶颈问题,避免做无用功
- 优化瓶颈能改善整个系统的响应时间
8.记录服务器收到的 SQL 语句:
- 有助于发现性能瓶颈
- 有助于发现重复的SQL语句
- 有助于发现不必要的SQL语句
- 有助于分析查询
9.检查 SQL 语句的查询执行计划:
- 查询执行计划的优劣是性能的关键
- 分析测试是否要创建辅助索引等
- 分析测试是否要调整系统参数
10.SQL语句优化:
- 使用索引
- 使用 HINT
- 调整性能参数
- 使用并行
- 使用 Query Mapping
- 物化视图
- 逻辑优化规则
11.选择合适的数据库应用模式:
- 单机单应用
- 单机多应用
- 服务器应用
12.选择合适的数据库访问接口:
- ODBC
- JDBC
- OLEDB
13.选择合适的接口参数:
- 接口都有各自支持的连接串、参数或属性
- 默认值不一定最符合应用的要求
14.选择合适的游标类型:
- 只读还是读写
- FORWARD ONLY
- 可滚动游标
15.选择合适的接口API:
- 绑定后多次执行&直接执行
- 用CATALOG函数获得元信息&直接访问字典表 更多信息,参见help.kingbase.com.cn/v8/index.ht…