人大金仓数据库KingbaseES SQL重点概念及调优手段

186 阅读4分钟

关键字:

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: