乾貨分享|快速定位UXDB中CPU高負荷的SQL語句
TOP監控
檢視佔用CPU高的uxdb程式,並獲取該程式的ID號,如圖該id號為28214。
查詢高佔用SQL
切換到uxdb使用者,uxsql連線到資料庫,執行如下查詢語句。
程式id procpid :28214。
SELECT procpid, START, now() - START AS lap, current_query FROM ( SELECT backendid, ux_stat_get_backend_pid (S.backendid) AS procpid,
ux_stat_get_backend_activity_start (S.backendid) AS START,ux_stat_get_backend_activity (S.backendid) AS current_query FROM (SELECT
ux_stat_get_backend_idset () AS backendid) AS S) AS S WHERE current_query <> '<IDLE>' and procpid=28214 ORDER BY lap DESC;
procpid | start | lap | current_query ---------+-------------------------------+------------------+-----------------------------------------------------------------------------------------------------
28214 | 2021-04-04 11:10:00.210575+08 | -00:00:00.000429 | insert into test values (random()*10000, random()*10000, random()*10000,md5(random()::text), CURRENT
_TIMESTAMP);
(1 row)
procpid:程式id 如果不確認程式ID,將上面的條件去掉,可以逐條分析 start:程式開始時間 lap:經過時間 current_query:執行中的sql。
怎麼停止正在執行的SQL?
SELECT ux_cancel_backend(28214);
ux_cancel_backend
-------------------
t
(1 row)
檢視該sql的執行計劃
使用explain analyze + sql語句的格式。
explain analyze insert into test values (random()*10000, random()*10000, random()*10000,md5(random()::text), CURRENT_TIMESTAMP);
QUERY PLAN
Insert on test (cost=0.00..0.05 rows=1 width=52) (actual time=0.142..0.142 rows=0 loops=1)
-> Result (cost=0.00..0.05 rows=1 width=52) (actual time=0.066..0.066 rows=1 loops=1)
Planning time: 0.058 ms
Execution time: 0.199 ms
(4 rows)
/*lanning time: 表明了生成查詢計劃的時間
Execution time:表明了實際的SQL 執行時間,其中不包括查詢計劃的生成時間*/
分析
本例用於說明查高佔用CPU的SQL方法,SQL合理性分析在此不做重要,本例主要是批量插入資料對CPU造成的壓力。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70009096/viewspace-2840150/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何快速定位當前資料庫消耗 CPU 最高的 sql 語句?資料庫SQL
- oracle 高耗cpu sql語句的捕捉 。OracleSQL
- sql語句引起的CPU佔用國高SQL
- 快速定位sql語句執行內容SQL
- Oracle高資源消耗SQL語句定位OracleSQL
- 監控使用高cpu的sql語句指令碼SQL指令碼
- 主動優化高負載SQL語句優化負載SQL
- MySQL 5.7定位消耗CPU高的SQLMySql
- 乾貨分享丨3種SQL語句最佳化方法,軟體測試必備!SQL
- 乾貨操作:MYSQL資料庫高階SQL語句詳解+實驗案例----------------------------下午好打工人MySql資料庫
- 幾個定位、查詢session的sql語句SessionSQL
- 乾貨分享 | C語言的聯合體C語言
- 建立SQL Server 2008的工作負荷SQLServer
- sql 中的with 語句使用SQL
- Sql語句本身的優化-定位慢查詢SQL優化
- MySql定位執行效率較低的SQL語句MySql
- Java中如何解析SQL語句、格式化SQL語句、生成SQL語句?JavaSQL
- postgresql定位top cpu sqlSQL
- 找出消耗CPU最高的程式對應的SQL語句SQL
- 分享乾貨啦!
- 利用 Arthas 精準定位 Java 應用 CPU 負載過高問題Java負載
- vim下快速輸入sql語句SQL
- 乾貨分享:六個知名的Go語言web框架GoWeb框架
- [20111214]oradebug快速定位有問題的sql語句SQL
- SQL乾貨篇SQL
- oracle資料庫:耗cpu sql語句優化Oracle資料庫SQL優化
- 用SQL語句檢查CPU和磁碟空間SQL
- 生產SQL語句突然變慢問題定位SQL
- Oracle儲存過程乾貨(二):PLSQL控制語句Oracle儲存過程SQL
- 實時查詢最耗CPU資源的SQL語句SQL
- Oracle儲存過程乾貨(三):PLSQL迴圈語句Oracle儲存過程SQL
- 實時獲得最耗CPU資源的SQL語句(zt)SQL
- oracle資料庫巡檢最佳化-使用sql語句快速定位資料庫瓶頸Oracle資料庫SQL
- 關於Mybatis中SQL語句的整理MyBatisSQL
- Oracle中SQL語句解析的步驟OracleSQL
- 刪除工作負荷組
- MySql乾貨分享之索引MySql索引
- CPU使用率低負載高負載