MySQL 如何獲取執行中的Queries資訊?
適用於:MySQL伺服器-版本5.6及更高版本
目的: 瞭解MySQL中執行了哪些查詢,並獲得它們的統計資料。
查詢資訊的主要來源是 performance_schema.events_statements_summary_by_digest 。此表根據規範化查詢的 前1024個字元 以及執行這些查詢的預設模式來聚集資料。它包括諸如查詢執行了多少次、總/平均/最小/最大執行次數、是否使用了索引等資訊。 events_statements_summary_by_digest 一行資料示例:
select * from performance_schema.events_statements_summary_by_digest limit 1\G ; *************************** 1. row *************************** SCHEMA_NAME: NULL DIGEST: NULL DIGEST_TEXT: NULL COUNT_STAR: 15874319033 SUM_TIMER_WAIT: 1187054378614800688 MIN_TIMER_WAIT: 7544000 AVG_TIMER_WAIT: 8209124000 MAX_TIMER_WAIT: 3613526422741000 SUM_LOCK_TIME: 1501434543795000000 SUM_ERRORS: 19634001 SUM_WARNINGS: 104128780 SUM_ROWS_AFFECTED: 7586098231 SUM_ROWS_SENT: 793508469051 SUM_ROWS_EXAMINED: 73964574771009 SUM_CREATED_TMP_DISK_TABLES: 29299 SUM_CREATED_TMP_TABLES: 1626394519 SUM_SELECT_FULL_JOIN: 391188771 SUM_SELECT_FULL_RANGE_JOIN: 1396714 SUM_SELECT_RANGE: 363623329 SUM_SELECT_RANGE_CHECK: 18 SUM_SELECT_SCAN: 2403956125 SUM_SORT_MERGE_PASSES: 4072044 SUM_SORT_RANGE: 0 SUM_SORT_ROWS: 205672901636 SUM_SORT_SCAN: 2416156953 SUM_NO_INDEX_USED: 2258897285 SUM_NO_GOOD_INDEX_USED: 24 FIRST_SEEN: 2021-11-23 00:45:19.866135 LAST_SEEN: 2023-09-15 22:18:11.186681 QUANTILE_95: 5011872336 QUANTILE_99: 125892541179 QUANTILE_999: 1513561248436 QUERY_SAMPLE_TEXT: select a.* ,b.REFUND_SIGN from t_orc_ve_bu_sale_order_to_c a QUERY_SAMPLE_SEEN: 2023-09-15 22:18:04.394621 QUERY_SAMPLE_TIMER_WAIT: 4336854074000 1 row in set (0.00 sec)
一些注意事項:
- 計時單位為皮秒( 10E-12 second)。在MySQL 8.0.16和更高版本中,您可以使用本機 FORMAT_PICO_TIME() 函式將時間轉換為人類可讀的格式:
- 在MySQL 8.0.15和更低版本中,使用 sys.format_time() 函式代替。
- 當MySQL重新啟動或表被截斷時,表中的資料會重置。
- 如果您在指定預設模式和在指定表名時包含模式名時保持一致,則摘要效果最好。
- 表中最多可以有 10000行(預設情況下)。如果您有更多的摘要(規範化查詢的雜湊)和預設模式的組合,那麼它們將被聚集在一行中 SCHEMA_NAME = NULL and DIGEST = NULL。
- 不包括使用伺服器端預準備語句執行的查詢。
- 如果查詢被執行並且執行時間比當前樣本慢或者當前樣本超過60秒,則預設情況下查詢樣本(最後三列——在MySQL 8中可用)會更新。
events_statements_summary_by_digest 表不包括在哪個時間間隔內執行了哪些查詢的資訊。
如果你只想檢視當前或最近的查詢,這裡有三個表,你可以使用:
- events_statements_current - 當前活動的語句或空閒連線的最後一條語句。
- events_statements_history - 每個連線的最後十條語句(預設)。
- events_statements_history_long - 任何連線的最後10000條語句(預設)。
events_statements_current 和 events_statements_history 預設情況下,表是啟用的。對於這些表,當連線關閉時,這些行將被刪除。 events_statements_history_long 預設情況下不啟用。對於該表,不會刪除已關閉連線的行。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2983845/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 5.7獲取指定執行緒正在執行SQL的執行計劃資訊MySql執行緒
- Mysql中獲取行號MySql
- 怎樣在程式中獲取所有執行緒的堆疊資訊?執行緒
- 如何獲取真實的執行計劃
- Linux應用程式獲取執行緒棧的資訊Linux執行緒
- Java如何獲取當前執行緒Java執行緒
- 如何優雅獲的獲取不同系統版本中的程式資訊
- php中對MYSQL操作之批量執行,與獲取批量結果PHPMySql
- 用python獲取mysql中的錶行數PythonMySql
- 獲取rman備份/恢復執行進度資訊
- 在MySQL中,如何獲取資料庫下所有表的資料行數?MySql資料庫
- 執行計劃__獲取方法、檢視執行順序、統計資訊詳解
- 獲取執行計劃的方法
- 【java】【多執行緒】獲取和設定執行緒名字、獲取執行緒物件(3)Java執行緒物件
- Oracle10g如何獲取執行計劃Oracle
- Java:如何輕鬆獲取當前執行的方法名Java
- MFC中獲取程式自身的版本資訊
- AWR 中 top sql 的資訊獲取 - 分析SQL
- python 的執行緒池如何獲取 work 佇列中的訊息數量Python執行緒佇列
- Docker+Jenkins+Pipline如何獲取git外掛環境變數(提交sha、分支等)以及Jenkinsfile中獲取sh執行結果(獲取git最近提交資訊)DockerJenkinsGit變數
- android如何獲取listview中的任意行資料AndroidView
- 執行計劃-1:獲取執行計劃
- 獲取SQL執行計劃SQL
- Laravel 獲取執行的sql語句LaravelSQL
- 獲取任務的執行結果
- Oracle獲取執行計劃的方法Oracle
- 獲取SQL執行計劃的方式:SQL
- 如何獲取java執行時動態生成的class檔案?Java
- Python中獲取執行緒返回值的常用方法!Python執行緒
- 如何獲取外網IP和IP的資訊
- ios 如何獲取WKWebview錯誤資訊iOSWebView
- [系列] Go - 基於 GORM 獲取當前請求所執行的 SQL 資訊GoORMSQL
- MySql中執行計劃如何來的——Optimizer TraceMySql
- Python如何獲取當前執行檔案路徑?Python
- jQuery如何獲取iframe中的元素jQuery
- 獲取執行計劃的6種方法
- springboot jar包執行中獲取資原始檔Spring BootJAR
- 獲取執行計劃之Autotrace