南大通用GBase 8s数据库之正在运行慢SQL检查:诊断与优化策略

原文链接:

https://www.gbase.cn/community/post/3872

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

在数据库的日常运维中,慢SQL的检测与优化是提升数据库性能的关键步骤。慢SQL不仅影响用户体验,还可能成为系统性能瓶颈的源头。本文将介绍如何检查正在运行的慢SQL,并提供相应的优化策略。

一、使用SQL查询检测慢SQL

1、SQL查询基础,通过特定的SQL查询,可以快速定位到成本较高且可能执行缓慢的SQL语句。这为我们进一步分析和优化提供了依据。

dbaccess sysmaster -<<!
select first 10 sqx_estcost,
sqx_estrows, sqx_sessionid,
sqx_sqlstatement
from sysmaster:syssqexplain
where 1=1
order by sqx_estcost desc;
!

2、分析查询输出结果,对查询结果进行分析,识别出成本最高且行数估计较多的SQL语句。这些语句往往是优化工作的首选目标。

sqx_estcost       2147483647
sqx_estrows       49
sqx_sessionid     51
sqx_sqlstatement  select max(t3.tabid) as id from systables t1,systables t2,sys
                  tables t3, systables t4,systables t5,systables t6
group by t
                  1.tabname,t2.tabname

3、输出结果解读,详细解读输出结果,理解每个字段的含义,如估计成本(sqx_estcost)、估计行数(sqx_estrows)、会话ID(sqx_sessionid)和SQL语句本身(sqx_sqlstatement)。

二、使用命令检查正在运行的慢SQL

1、检查一直在运行的线程rstcb,检查第三列不变持续输出的线程。

onstat -g act -r 1 | egrep "sqlexec|threads"

输出:

Running threads:
 215     4a645178         470f33e8         1   running                 8cpu         sqlexec
Running threads:
 215     4a645178         470f33e8         1   running                 8cpu         sqlexec

2、查看线程会话,根据上一步输出,检查线程信息

onstat -u |grep 470f33e8

输出:

470f33e8         ---P--- 51       gbasedbt -        0                0    1    5        0

3、检查会话信息,跟据上一步输出,检查会话信息及执行的sql。

onstat -g ses 51

输出:

On-Line -- Up 14 days 19:53:19 -- 674664 Kbytes

session           effective                            #RSAM    total     used       dynamic
id       user    user      tty      pid     hostname threads  memory     memory    explain
51       gbasedbt -         -        1486    dbhost1  1        221184     218648    off

Program :
/opt/gbase/bin/dbaccess

tid      name    rstcb            flags    curstk  status
215      sqlexec 470f33e8         ---P---  10528   running-

Memory pools    count 2
name         class addr              totalsize  freesize  #allocfrag #freefrag
51           V    4a745040         217088     1728      453        6
51*O0        V    4a788040         4096       808        1          1

name           free       used          name           free       used
overhead       0          6576           scb            0          144
opentable      0         9192           filetable      0         904
log            0          16536          temprec        0          22688
keys           0          176            ralloc         0          80024
gentcb         0          1616           ostcb          0          2968
sqscb          0          21064          sql            0          18952
hashfiletab    0         552            osenv          0          2768
sqtcb          0          9688           fragman        0          1240
shmblklist     0         22568          rsam_seqscan   0         992

sqscb info
scb              sqscb            optofc   pdqpriority optcompind  directives
47b61290         4a735028         0        0           2           1

Sess       SQL            Current            Iso Lock       SQL ISAM F.E.
Id         Stmt type      Database           Lvl Mode       ERR ERR  Vers  Explain
51         SELECT        testdb             LC Not Wait   0    0   9.24  Off

Current statement name : unlcur

Current SQL statement (2) :
  select max(t3.tabid) as id from systables t1,systables t2,systables t3,
    systables t4,systables t5,systables t6  group by t1.tabname,t2.tabname

Last parsed SQL statement :
  select max(t3.tabid) as id from systables t1,systables t2,systables t3,
    systables t4,systables t5,systables t6  group by t1.tabname,t2.tabname

通过对正在运行的慢SQL的检查和分析,我们可以更准确地识别性能瓶颈并采取相应的优化措施。无论是使用SQL查询还是系统命令,关键在于理解输出结果并据此制定优化策略。

感谢您的阅读,希望本文能帮助您在数据库性能优化的道路上更进一步。如果您在慢SQL检测和优化方面有任何疑问,欢迎在评论区留言讨论。

原文链接:

https://www.gbase.cn/community/post/3872

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值