通过监控发现达梦数据库内存占用过高的时候,可以根据如下方法进行排查
登陆服务器 使用top -H -p 进程号(PID)查询目前该进程内哪些线程占用较高
通过 ps -T -p 进程号 查询线程 ps -ef |grep DM 查询进程号
找到占用较高的线程后,登陆数据库执行命令select * from SYS."V$SESSIONS" t where t.THRD_ID=线程号。 可以看到实际执行的sql是什么,sessionID是什么,辅助检查内存占用过高的原因。
或者从 sqlhistory里面查询历史sql
select * from SYS."V$SQL_HISTORY" t where t.sess_id=sessionid;
直接查询
select * from "SYS"."V$LONG_EXEC_SQLS";
6.如果会话找不到,无法提交或者取消,使得造成表锁的情况 可以通过关闭会话的方式关闭会话 解锁表
sp_close_session(sess_id);
7.也可以select * from sys.sysobjects t where id= 1069; --查询被锁的表
通过上述方式可以排查项目内sql执行导致的性能问题
文章
阅读量
获赞