视图
GaussDB 200提供了许多视图,用于展示数据库的内部状态,在定位故障时,经常使用的视图有:
- pg_stat_activity,用于查询当前实例上各个session的状态;
- pg_thread_wait_status,用于查询该实例上各个线程的等待事件;
- pgxc_thread_wait_status,用于查询集群所有实例上各个线程的等待事件;
- pg_locks,用于查询当前实例上的锁状态;
- pgxc_node,用于显示集群中所有实例的IP/PORT;
当出现疑似查询停止响应的问题时,通过pg_thread_wait_status可以查看当前查询的等待状态,确定CN在等哪个DN;通过pgxc_thread_wait_status可以查看查询在整个集群节点上的等待状态,确定查询阻塞状态。如果对应的等待状态为acquire lwlock、acquire lock或者wait io,可以查看wait event列,确定当前查询具体的等待事件类型。
例如: 以构造DN上锁等待为例说明如何使用上述视图。
通过pg_thread_wait_status查询到CN在等待dn_6003_6004。
human_resource=#select * from pg_thread_wait_status; node_name | db_name | thread_name | query_id | tid | lwtid | ptid | tlevel | smpid | wait_status | wait_event -----------+----------------+-------------------+----------+-----------------+-------+------+--------+-------+------------------------------------- cn_5002 | human_resource | gsql | 37749717 | 140592340268816 | 60550 | | 0 | 0 | wait node: dn_6003_6004 |
通过pgxc_thread_wait_status查询到dn_6003_6004请求了锁,cn_5002在等待dn_6003_6004返回执行结果。
human_resource=#select * from pgxc_thread_wait_status where query_id=37749717; node_name | db_name | thread_name | query_id | tid | lwtid | ptid | tlevel | smpid | wait_status | wait_event --------------+----------------+-------------+----------+-----------------+-------+------+--------+-------+--------------------------------- dn_6003_6004 | human_resource | cn_5002 | 37749717 | 140625508820752 | 68888 | | 0 | 0 | acquire lock | relation cn_5002 | human_resource | gsql | 37749717 | 140592340268816 | 60550 | | 0 | 0 | wait node: dn_6003_6004 |
对于大规模集群,还可以通过EXECUTE DIRECT进一步查询DN上的锁信息。例如:
EXECUTE DIRECT ON(dn_6003_6004) ‘SELECT * FROM PG_THREAD_WAIT_STATUS WHERE QUERY_ID= 37749717’;
node_name | db_name | thread_name | query_id | tid | lwtid | ptid | tlevel | smpid | wait_status | wait_event --------------+----------+-------------+----------+-----------------+-------+------+--------+-------+------------------------------ dn_6003_6004 | postgres | cn_5001 | 25199867 | 139891497187088 | 18649 | | 0 | 0 | acquire lock | relation (1 row)
查看更多:华为GaussDB 200 数据库故障定位手段「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」关注作者【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。评论