GaussDB(DWS)查看后臺(tái)活躍SQL和執(zhí)行狀態(tài)

      網(wǎng)友投稿 2280 2025-03-31

      背景:使用數(shù)據(jù)庫過程中,執(zhí)行一條查詢語句很慢,想知道后臺(tái)語句的執(zhí)行情況。可通過以下方式查看數(shù)據(jù)庫后臺(tái)當(dāng)前執(zhí)行的所有語句和語句的執(zhí)行情況。


      1. PGXC_STAT_ACTIVITY視圖介紹

      PGXC_STAT_ACTIVITY視圖顯示當(dāng)前集群下所有CN的查詢相關(guān)的信息,只有系統(tǒng)管理員才有權(quán)限執(zhí)行。該視圖的coorname表示執(zhí)行該語句的CN,query_id字段表示該query的唯一ID,同一條語句在不同節(jié)點(diǎn)的query_id相同,不同語句的query_id不同。pid表示該語句在對應(yīng)節(jié)點(diǎn)上的線程ID,usename表示執(zhí)行該語句的用戶,query_start表示該語句開始執(zhí)行的時(shí)間,enqueue表示語句是否正在排隊(duì)。該字段為空表示未處于排隊(duì)狀態(tài),state字段表示對應(yīng)的語句執(zhí)行狀態(tài),常見狀態(tài)如下:

      active:后端正在執(zhí)行一個(gè)查詢。

      idle:后端正在等待一個(gè)新的客戶端命令。

      idle in transaction:后端在事務(wù)中,但事務(wù)中沒有語句在執(zhí)行。

      idle in transaction (aborted):后端在事務(wù)中,但事務(wù)中有語句執(zhí)行失敗。

      利用此視圖對相關(guān)字段進(jìn)行過濾,即可查詢得到當(dāng)前的后臺(tái)所有CN上的活躍語句:

      select coorname, usename, client_addr, sysdate-query_start as dur, enqueue, query_id, substr(query,1,60) from pgxc_stat_activity where usename != 'Ruby' and state != 'idle' order by dur desc;

      其中,Ruby用戶為數(shù)據(jù)庫的初始用戶,一般情況下我們不關(guān)心初始用戶相關(guān)的語句。執(zhí)行上述查詢即可得到當(dāng)前后臺(tái)所有活躍的sql情況和已經(jīng)執(zhí)行的時(shí)長。接下來,可以根據(jù)查到的query_id利用等待視圖PGXC_THREAD_WAIT_STATUS對執(zhí)行的慢sql進(jìn)行分析,查看語句的執(zhí)行狀態(tài)。

      2. PGXC_THREAD_WAIT_STATUS視圖介紹

      GaussDB(DWS)查看后臺(tái)活躍SQL和執(zhí)行狀態(tài)

      通過CN節(jié)點(diǎn)查看PGXC_THREAD_WAIT_STATUS視圖,可以查看集群全局各個(gè)節(jié)點(diǎn)上所有SQL語句產(chǎn)生的線程之間的調(diào)用層次關(guān)系,以及各個(gè)線程的阻塞等待狀態(tài),從而更容易定位進(jìn)程停止響應(yīng)問題以及類似現(xiàn)象的原因。該視圖中我們需重點(diǎn)關(guān)注wait_status字段和wait_event字段,其中,wait_status字段表示當(dāng)前線程的等待狀態(tài),wait_event表示等待事件,一般為acquire lock、acquire lwlock、wait io三種類型。根據(jù)上一步查詢得到的query_id查詢等待視圖,即可得到該語句的等待時(shí)間狀態(tài),分析出慢sql的瓶頸點(diǎn):

      select * from pgxc_thread_wait_status where query_id = 20971544;

      例如:

      select * from pgxc_thread_wait_status where query_id=20971544; node_name | db_name | thread_name | query_id | tid | lwtid | ptid | tlevel | smpid | wait_status | wait_event --------------+----------+--------------+----------+-----------------+-------+-------+--------+-------+---------------------- datanode1 | postgres | coordinator1 | 20971544 | 139902867994384 | 22735 | | 0 | 0 | wait node: datanode3 | datanode1 | postgres | coordinator1 | 20971544 | 139902838634256 | 22970 | 22735 | 5 | 0 | synchronize quit | datanode1 | postgres | coordinator1 | 20971544 | 139902607947536 | 22972 | 22735 | 5 | 1 | synchronize quit | datanode2 | postgres | coordinator1 | 20971544 | 140632156796688 | 22736 | | 0 | 0 | wait node: datanode3 | datanode2 | postgres | coordinator1 | 20971544 | 140632030967568 | 22974 | 22736 | 5 | 0 | synchronize quit | datanode2 | postgres | coordinator1 | 20971544 | 140632081299216 | 22975 | 22736 | 5 | 1 | synchronize quit | datanode3 | postgres | coordinator1 | 20971544 | 140323627988752 | 22737 | | 0 | 0 | wait node: datanode3 | datanode3 | postgres | coordinator1 | 20971544 | 140323523131152 | 22976 | 22737 | 5 | 0 | net flush data | datanode3 | postgres | coordinator1 | 20971544 | 140323548296976 | 22978 | 22737 | 5 | 1 | net flush data datanode4 | postgres | coordinator1 | 20971544 | 140103024375568 | 22738 | | 0 | 0 | wait node: datanode3 datanode4 | postgres | coordinator1 | 20971544 | 140102919517968 | 22979 | 22738 | 5 | 0 | synchronize quit | datanode4 | postgres | coordinator1 | 20971544 | 140102969849616 | 22980 | 22738 | 5 | 1 | synchronize quit | coordinator1 | postgres | gsql | 20971544 | 140274089064208 | 22579 | | 0 | 0 | wait node: datanode4 | (13 rows)

      可以看到,該語句在CN1執(zhí)行,coordinator1在等datanode4,datanode4在等datanode3,datanode3在的等待狀態(tài)為net flush data,表示該節(jié)點(diǎn)正在向網(wǎng)絡(luò)中發(fā)送數(shù)據(jù),說明整個(gè)查詢的瓶頸點(diǎn)在datanode3的網(wǎng)絡(luò)傳輸,該節(jié)點(diǎn)可能存在網(wǎng)絡(luò)瓶頸。

      等待視圖中各等待狀態(tài)詳情可以通過以下文檔查看:

      https://support.huaweicloud.com/devg-dws/dws_04_0565.html

      3. 二者結(jié)合使用

      對于一些有明顯特征的SQL,比如表名/別名/注釋等,能根據(jù)該特征標(biāo)志出唯一sql,可以執(zhí)行以下SQL將PGXC_STAT_ACTIVITY和PGXC_THREAD_WAIT_STATUS進(jìn)行關(guān)聯(lián)查詢:

      select w.* from pgxc_thread_wait_status w left join pgxc_stat_activity a on w.query_id=a.query_id where a.query_id != 0 and a.query like '%explain performance%' and a.query not like '%pgxc_stat_activity%';

      本例中,explain performance能夠標(biāo)識(shí)唯一SQL,即可使用該sql直接查詢得到等待視圖情況。

      數(shù)據(jù)倉庫服務(wù) GaussDB(DWS) Gauss AP EI企業(yè)智能

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:如何在Excel中的單元格中翻轉(zhuǎn)名字和姓氏?
      下一篇:Excel公式返回#NUM!錯(cuò)誤值原因及解決方法
      相關(guān)文章
      久久国产成人亚洲精品影院| 亚洲免费视频网址| 亚洲乱码在线播放| 亚洲美女人黄网成人女| 国产精品亚洲精品日韩已满| 国产亚洲成人在线播放va| 亚洲av麻豆aⅴ无码电影| 偷自拍亚洲视频在线观看| 在线精品自拍亚洲第一区| 噜噜综合亚洲AV中文无码| 亚洲av午夜电影在线观看| 亚洲区日韩精品中文字幕| 亚洲av永久无码| 日韩亚洲国产二区| 亚洲人成电影网站国产精品 | 亚洲AV无一区二区三区久久| 亚洲成av人在线视| 亚洲一区二区电影| 亚洲精品视频免费| 亚洲午夜国产精品无码老牛影视| 国产亚洲人成网站在线观看不卡| 亚洲色精品88色婷婷七月丁香 | 国产色在线|亚洲| 亚洲熟妇无码一区二区三区| 亚洲中文精品久久久久久不卡| 午夜在线a亚洲v天堂网2019| 国产亚洲中文日本不卡二区| 亚洲av午夜电影在线观看| 亚洲欧洲日产国码高潮αv| 亚洲精品少妇30p| 亚洲精品在线观看视频| 亚洲噜噜噜噜噜影院在线播放| 国产v亚洲v天堂a无| 亚洲AV成人无码久久WWW| 亚洲高清国产拍精品青青草原| 国产亚洲欧洲Aⅴ综合一区| 亚洲AV永久青草无码精品| 91亚洲精品第一综合不卡播放| 亚洲AV综合色区无码二区爱AV| 亚洲av无码无线在线观看| 中文字幕亚洲不卡在线亚瑟|