MogDB/Opengauss 通过活跃会话定位性能瓶颈

2023年 11月 17日 117.7k 0

MogDB/Opengauss 通过活跃会话定位性能瓶颈

原作者:唐祖亮

通过 top命令获取消耗CPU最多的会话

• mogdb/opengauss使用多线程模式
• 获取mogdb pid
• ps -ef | grep mogdb

可以看到当前服务器上运行的Mogdb数据库的PID为22203.

• top –H –p


通过top命令查看占用cpu高的线程ID。

检查特定thread的信息 – dbe_perf.THREAD_WAIT_STATUS

• d dbe_perf.THREAD_WAIT_STATUS

select tid,lwtid,query_id,wait_status,wait_event , block_sessionid • from dbe_perf.THREAD_WAIT_STATUS where lwtid = ;

检查特定session的信息 – dbe_perf.SESSION_STAT_ACTIVITY --dbe_perf.THREAD_WAIT_STATUS

d dbe_perf.SESSION_STAT_ACTIVITY

d dbe_perf.THREAD_WAIT_STATUS

select * from dbe_perf.session_stat_activity where pid=;

select pid,sessionid,tid,a.query_id,wait_event,query from dbe_perf.SESSION_STAT_ACTIVITY a,dbe_perf.THREAD_WAIT_STATUS b where pid=tid and lwtid = ;


通过线程号关联dbe_perf.SESSION_STAT_ACTIVITY、dbe_perf.THREAD_WAIT_STATUS 两张视图查询出活跃会话的详细信息。
可以看到会话中执行的sql是两个表关联查看两个表的信息。

可以看到两张表是很大的而sql文本中没有对两张表进行条件过滤所以只能以全表扫描的方式进行NL连接导致占用大量CPU。我们通过分析活跃会话成功的定位了消耗高的会话和SQL,定位到问题之后进行处理优化便能降低数据库的负载提升数据库运行效率。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论