0
点赞
收藏
分享

微信扫一扫

GBase 8s 数据库监控(6)

八卦城的酒 2022-04-14 阅读 49
数据库

8.找到运行最慢的 SQL 语句

系统中 20%的 SQL 语句占用了 80%的系统资源,所以 DBA 在优化数据库时,找出和优化运行慢的 SQL 语句至关重要,如何捕获到系统中运行慢的 SQL 语句对很多 DBA 来说非常困难,这里介绍两种有效的方法:当前运行慢的 SQL 和在一段时间内运行慢的 SQL语句。

查询数据库当前运行最慢的 SQL 语句的 SQL 语句如下。

select first 25 sqx_estcost,

sqx_estrows,

sqx_sqlstatement

from sysmaster:syssqexplain

where 1=1

order by sqx_estcost desc;

监控数据库当前运行最慢的 SQL 语句的查询结果如下。

通过查询当前正在执行的 SQL 语句的开销来监控运行慢的 SQL 语句。当数据库非常繁忙时,多次运行该语句,就可以找到那些慢的 SQL 语句。如果要找到数据库中在一段时间内(比如从早上 8 点到 12 点)运行比较慢的 SQL 语句,那么我们需要利用 GBase 8s 的 SQLTRACE 功能。SQLTRACE 功能的使用方法如下:

echo 'execute function task ("set sql tracing on",100000, "1k", "low","dbtest");' | dbaccess sysadmin

说明:

dbtest为跟踪的数据库名;

100000 为最多跟踪的 SQL 语句个数,超过这个数字时,将最早跟踪的 SQL 删除 1K

为每个 SQL 占用的内存,对于特别大的 SQL 语句需要设置更大的值,如 2k、4k。

9.关闭 SQLTRACE 功能

关闭 SQLTRACE 功能的使用方法如下:

echo ' execute function sysadmin:task("SET SQL TRACING OFF"); ' | dbaccess

跟踪分析完成后,一定要关闭。在 SQL-Tracing 开启下将对系统有 2%~5%的性能消耗。另外,关闭后,跟踪的信息(内存)将字典释放,一定要分析完成后再关闭,或者定期把捕获的信息转存到自定义的表(创建三个和 sql-tracing 字典表一致的表即可)中,供进一步分析使用。

10.结果分析

我们可以对 SQL-Tracing 捕获的结果进行分析。

  1.  顺序扫描的 SQL

select distinct sql_statement

from sysmaster:Syssqltrace t

inner join sysmaster:syssqltrace_iter i

on t.sql_id = i.sql_id

where i.sql_itr_info='Seq Scan';

  1.  查询速度慢的 SQL

可以通过不同的指标进行排名:

echo "select first 20 * from sysmaster:syssqltrace order by sql_totaltime"| dbaccess dbtest

 

举报

相关推荐

0 条评论