人大金仓数据库KingbaseES SQL调优-生成SQL调优报告

关键字:

SQL调优、调优报告、人大金仓

SQL调优

SQL调优是用于优化关系型数据库中的查询以尽可能高效地运行,这可以确保应用程序发出的SQL语句在尽可能短的时间内运行,目标是减少最终用户的响应时间或减少用于处理相同工作的资源。

在数据库的众多性能问题中,SQL性能问题占有极大的比例,可以认为大多数性能问题都源于查询语句写得不好或者是索引效率低下,我们通常可以借助自动化性能调优工具对查询语句进行调优。

自动化性能调优工具提供了关于可能需要添加、删除或修改以优化性能的索引的建议,这些工具有助于提高索引、查询和数据库的性能。一些工具会生成有关查询执行中涉及的步骤的统计信息,这些步骤有助于识别和优化数据库和服务器性能。

通过使用SQL优化建议,优化器可以根据数据库内部状态,为DBA提供调优建议。应用这些调优建议后,被调优的SQL语句性能将获得提升。KES的SQL建议支持生成SQL调优报告,为相关人员提供SQL调优报告,从而进行SQL的优化。下面我们将介绍如何生成SQL调优报告。

SQL调优报告插件配置

1、在kingbase.conf配置文件,插入sys_sqltune到shared_preload_libraries中:

shared_preload_libraries = 'plsql, sys_stat_statements, sys_sqltune'

启动或者重启数据库。

2、创建sys_sqltune插件

kingbase=# create extension sys_sqltune;

CREATE EXTENSION

3、SQL调优报告生成

3.1 数据构造

# 创建表

kingbase=# create table t(id int);

CREATE TABLE

# 插入数据

kingbase=# insert into t select generate_series(1,100000);

INSERT 0 100000

3.2 生成调优报告

kingbase=# select PERF.QUICK_TUNE_BY_SQL('select * from t where id = 1 union select * from t where id = 1;');

可以发现有两个优化建议:

C:\Users\zhangshixing\Desktop\001.PNG

下面进行第一个优化,创建索引:

kingbase=# CREATE INDEX ON public.t USING hash (id);

CREATE INDEX

再次查看优化建议:

kingbase=# select PERF.QUICK_TUNE_BY_SQL('select * from t where id = 1 union select * from t where id = 1;');

C:\Users\zhangshixing\Desktop\001.PNG

C:\Users\zhangshixing\Desktop\001.PNG

发现只剩下一个优化建议了,我们进行第二次优化,使用union all代替union:

kingbase=# select PERF.QUICK_TUNE_BY_SQL('select * from t where id = 1 union select * from t where id = 1;');

C:\Users\zhangshixing\Desktop\001.PNG

发现已经全部优化完毕。

3.3 生成调优报告到文件

# 开启sys_stat_Statements统计

set sys_stat_statements.track = 'top';

# 执行语句插入sys_stat_statements

select * from t where id = 1 union select * from t where id = 1;

# 查询语句queryid

select queryid from sys_stat_statements where query like 'select * from t where%';

# 生成调优建议

select PERF.QUICK_TUNE_BY_QUERYID_TO_FILE({queryid}, 'text', 'sqltuning.txt');

参考资料

《KingbaseES产品手册》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值