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中,如何獲取資料庫下所有表的資料行數?MySql資料庫
- python 的執行緒池如何獲取 work 佇列中的訊息數量Python執行緒佇列
- Linux應用程式獲取執行緒棧的資訊Linux執行緒
- springboot jar包執行中獲取資原始檔Spring BootJAR
- 如何優雅獲的獲取不同系統版本中的程式資訊
- Java如何獲取當前執行緒Java執行緒
- Docker+Jenkins+Pipline如何獲取git外掛環境變數(提交sha、分支等)以及Jenkinsfile中獲取sh執行結果(獲取git最近提交資訊)DockerJenkinsGit變數
- MFC中獲取程式自身的版本資訊
- 【java】【多執行緒】獲取和設定執行緒名字、獲取執行緒物件(3)Java執行緒物件
- 資訊爆炸時代,如何獲取優質資訊?
- Java:如何輕鬆獲取當前執行的方法名Java
- [系列] Go - 基於 GORM 獲取當前請求所執行的 SQL 資訊GoORMSQL
- Python中獲取執行緒返回值的常用方法!Python執行緒
- 應屆生如何獲取招聘資訊
- Spring 中優雅的獲取泛型資訊Spring泛型
- Laravel 獲取執行的sql語句LaravelSQL
- 獲取任務的執行結果
- 執行計劃-1:獲取執行計劃
- 如何獲取java執行時動態生成的class檔案?Java
- Python如何獲取當前執行檔案路徑?Python
- 獲取位置資訊
- 如何獲取 C# 類中發生資料變化的屬性資訊C#
- 獲取SqlServer 2005中欄位的備註資訊SQLServer
- MySql中執行計劃如何來的——Optimizer TraceMySql
- jvm-46-jvm Thread Dump 執行緒的資訊獲取+可視分析化工具 FastThreadJVMthread執行緒AST
- Java 使用輪詢獲取執行緒返回資料Java執行緒
- 【執行計劃】Oracle獲取執行計劃的幾種方法Oracle
- 獲取執行計劃之Autotrace
- Linux: 獲取硬碟的UUID資訊Linux硬碟UI
- 獲取.crt證書的資訊
- 如何獲取想要的資料?
- Mysql批量大資料獲取MySql大資料
- 【Spark】 Spark作業執行原理--獲取執行結果Spark
- 使用捕獲 獲取身份證號的資訊
- 如何獲取最新安全資訊與技術
- SpringBoot專案中獲取配置檔案的配置資訊Spring Boot
- 達夢資料庫獲取SQL真實的執行計劃資料庫SQL
- Java 執行緒池獲取池中所有執行緒列表的方法Java執行緒