乾貨分享|快速定位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
- MySQL 5.7定位消耗CPU高的SQLMySql
- 乾貨分享丨3種SQL語句最佳化方法,軟體測試必備!SQL
- Sql語句本身的優化-定位慢查詢SQL優化
- 乾貨操作:MYSQL資料庫高階SQL語句詳解+實驗案例----------------------------下午好打工人MySql資料庫
- Java中如何解析SQL語句、格式化SQL語句、生成SQL語句?JavaSQL
- postgresql定位top cpu sqlSQL
- 乾貨分享 | C語言的聯合體C語言
- springboot 中列印 sql 語句Spring BootSQL
- [20240607]PL/SQL中sql語句的註解.txtSQL
- 利用 Arthas 精準定位 Java 應用 CPU 負載過高問題Java負載
- 關於Mybatis中SQL語句的整理MyBatisSQL
- SQL語句SQL
- SQL語句IN的用法SQL
- Oracle儲存過程乾貨(二):PLSQL控制語句Oracle儲存過程SQL
- 乾貨分享:六個知名的Go語言web框架GoWeb框架
- sv新增工作負荷(新增其他程式語言)
- sql中row_number over語句SQL
- 【SQL】9 SQL INSERT INTO 語句SQL
- 【SQL】10 SQL UPDATE 語句SQL
- 【SQL】11 SQL DELETE 語句SQLdelete
- SQL SELECT 語句SQL
- sql常用語句SQL
- Oracle儲存過程乾貨(三):PLSQL迴圈語句Oracle儲存過程SQL
- DBeaver如何快速格式化sql語句,真簡單!SQL
- Laravel 中輕鬆容易的輸出 SQL 語句LaravelSQL
- mysql建表常用sql語句個人經驗分享MySql
- Sqlserver定位哪些物件和哪些會話哪些sql語句消耗了tempdbSQLServer物件會話
- sql語句如何執行的SQL
- MySQL中常用的SQL語句MySql
- sqlserver dba常用的sql語句SQLServer
- SQL 語句的注意事項SQL
- sql宣告變數,及if -else語句、while語句的用法SQL變數While
- 1.3. SQL 語句SQL
- Oracle基本SQL語句OracleSQL
- Sql語句小整理SQL
- SQL語句優化SQL優化
- SQL 語句學習SQL