Performance Insight是專註於執行個體負載監控、關聯分析、效能調優的利器,協助您迅速評估資料庫負載,找到效能問題的源頭,提升資料庫的穩定性。
前提條件
RDS MySQL執行個體需為8.0或5.7版本,且核心小版本為20190915及以上。
您可以在基本資料頁面的配置資訊地區查看是否有升級核心小版本按鈕。如果有按鈕,您可以單擊按鈕查看目前的版本;如果沒有按鈕,表示已經是最新版。詳情請參見升級核心小版本。
Performance Insight介紹
Performance Insight由如下兩部分組成:
Object statistics
Object statistics查詢表和索引的統計資訊,包括如下兩個表:
TABLE_STATISTICS:記錄讀取和修改的行。
INDEX_STATISTICS:記錄索引的讀取行。
Performance point
Performance point提供執行個體的詳細效能資訊,方便您更快更準確地量化SQL的開銷。Performance point包括如下三個維度:
CPU:包括執行任務的總時間(Elapsed time)、CPU執行任務的時間(CPU time)等。
LOCK:包括伺服器MDL鎖時間、儲存事務鎖時間、互斥衝突(僅偵錯模式)、讀寫鎖衝突等。
IO:資料檔案讀寫時間、記錄檔寫入時間、邏輯讀取、物理讀取、物理非同步讀取等。
Object statistics使用方法
確認參數OPT_TABLESTAT和OPT_INDEXSTAT的值為ON。樣本如下:
mysql> show variables like "opt_%_stat"; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | opt_indexstat | ON | | opt_tablestat | ON | +---------------+-------+在information_schema資料庫查詢TABLE_STATISTICS表或INDEX_STATISTICS表,查看錶和索引的統計資訊。樣本如下:
mysql> select * from TABLE_STATISTICS limit 10; +--------------+--------------+-----------+--------------+------------------------+---------------+--------------+--------------+ | TABLE_SCHEMA | TABLE_NAME | ROWS_READ | ROWS_CHANGED | ROWS_CHANGED_X_INDEXES | ROWS_INSERTED | ROWS_DELETED | ROWS_UPDATED | +--------------+--------------+-----------+--------------+------------------------+---------------+--------------+--------------+ | mysql | db | 2 | 0 | 0 | 0 | 0 | 0 | | mysql | engine_cost | 2 | 0 | 0 | 0 | 0 | 0 | | mysql | proxies_priv | 1 | 0 | 0 | 0 | 0 | 0 | | mysql | server_cost | 6 | 0 | 0 | 0 | 0 | 0 | | mysql | tables_priv | 2 | 0 | 0 | 0 | 0 | 0 | | mysql | user | 7 | 0 | 0 | 0 | 0 | 0 | | test | sbtest1 | 1686 | 142 | 184 | 112 | 12 | 18 | | test | sbtest10 | 1806 | 125 | 150 | 105 | 5 | 15 | | test | sbtest100 | 1623 | 141 | 182 | 110 | 10 | 21 | | test | sbtest11 | 1254 | 136 | 172 | 110 | 10 | 16 | +--------------+--------------+-----------+--------------+------------------------+---------------+--------------+--------------+ mysql> select * from INDEX_STATISTICS limit 10; +--------------+--------------+------------+-----------+ | TABLE_SCHEMA | TABLE_NAME | INDEX_NAME | ROWS_READ | +--------------+--------------+------------+-----------+ | mysql | db | PRIMARY | 2 | | mysql | engine_cost | PRIMARY | 2 | | mysql | proxies_priv | PRIMARY | 1 | | mysql | server_cost | PRIMARY | 6 | | mysql | tables_priv | PRIMARY | 2 | | mysql | user | PRIMARY | 7 | | test | sbtest1 | PRIMARY | 2500 | | test | sbtest10 | PRIMARY | 3007 | | test | sbtest100 | PRIMARY | 2642 | | test | sbtest11 | PRIMARY | 2091 | +--------------+--------------+------------+-----------+參數說明如下。
參數
說明
TABLE_SCHEMA
資料庫名稱。
TABLE_NAME
表名稱。
ROWS_READ
讀的行數。
ROWS_CHANGED
修改的行數。
ROWS_CHANGED_X_INDEXES
索引修改的行數。
ROWS_INSERTED
插入的行數。
ROWS_DELETED
刪除的行數。
ROWS_UPDATED
更新的行數。
INDEX_NAME
索引名稱。
Performance point使用方法
確認Performance point的相關參數。正常的樣本如下:
mysql> show variables like "%performance_point%"; +---------------------------------------+-------+ | Variable_name | Value | +---------------------------------------+-------+ | performance_point_dbug_enabled | OFF | | performance_point_enabled | ON | | performance_point_iostat_interval | 2 | | performance_point_iostat_volume_size | 10000 | | performance_point_lock_rwlock_enabled | ON | +---------------------------------------+-------+說明如果參數找不到,請確認您的執行個體版本是否符合前提條件中的執行個體版本要求。
在performance_schema資料庫查詢events_statements_summary_by_digest_supplement表,查看排名前10的SQL語句。樣本如下:
mysql> select * from events_statements_summary_by_digest_supplement limit 10; +--------------------+----------------------------------+-------------------------------------------+--------------+ | SCHEMA_NAME | DIGEST | DIGEST_TEXT | ELAPSED_TIME | ...... +--------------------+----------------------------------+-------------------------------------------+--------------+ | NULL | 6b787dd1f9c6f6c5033120760a1a82de | SELECT @@`version_comment` LIMIT ? | 932 | | NULL | 2fb4341654df6995113d998c52e5abc9 | SHOW SCHEMAS | 2363 | | NULL | 8a93e76a7846384621567fb4daa1bf95 | SHOW VARIABLES LIKE ? | 17933 | | NULL | dd148234ac7a20cb5aee7720fb44b7ea | SELECT SCHEMA ( ) | 1006 | | information_schema | 2fb4341654df6995113d998c52e5abc9 | SHOW SCHEMAS | 2156 | | information_schema | 74af182f3a2bd265678d3dadb53e08da | SHOW TABLES | 3161 | | information_schema | d3a66515192fcb100aaef6f8b6e45603 | SELECT * FROM `TABLE_STATISTICS` LIMIT ? | 2081 | | information_schema | b3726b7c4c4db4b309de2dbc45ff52af | SELECT * FROM `INDEX_STATISTICS` LIMIT ? | 2384 | | information_schema | dd148234ac7a20cb5aee7720fb44b7ea | SELECT SCHEMA ( ) | 129 | | test | 2fb4341654df6995113d998c52e5abc9 | SHOW SCHEMAS | 342 | +--------------------+----------------------------------+-------------------------------------------+--------------+參數說明如下。
參數
說明
SCHEMA_NAME
資料庫名稱。
DIGEST
Digest_text進行hash計算得到的64位元組的hash字串。
DIGEST_TEXT
SQL語句的特徵。
ELAPSED_TIME
實際已耗用時間。單位:μs。
CPU_TIME
CPU已耗用時間。單位:μs。
SERVER_LOCK_TIME
伺服器鎖定時間。單位:μs。
TRANSACTION_LOCK_TIME
儲存事務鎖定時間。單位:μs。
MUTEX_SPINS
互斥旋轉次數。
MUTEX_WAITS
互斥等待次數。
RWLOCK_SPIN_WAITS
讀寫閂鎖的自旋等待數。
RWLOCK_SPIN_ROUNDS
讀寫閂鎖的旋轉迴圈圈數。
RWLOCK_OS_WAITS
讀寫閂鎖的作業系統等待數。
DATA_READS
資料檔案讀取次數。
DATA_READ_TIME
資料檔案讀取時間。單位:μs。
DATA_WRITES
資料檔案寫入次數。
DATA_WRITE_TIME
資料檔案寫入時間。單位:μs。
REDO_WRITES
記錄檔寫入次數。
REDO_WRITE_TIME
記錄檔寫入時間。單位:μs。
LOGICAL_READS
邏輯頁讀取次數。
PHYSICAL_READS
物理頁讀取次數。
PHYSICAL_ASYNC_READS
物理非同步頁讀取次數。
在information_schema資料庫查詢IO_STATISTICS表,查看最近的資料讀寫情況。樣本如下:
mysql> select * from IO_STATISTICS limit 10; +---------------------+-----------+----------------+ | TIME | DATA_READ | DATA_READ_TIME | ...... +---------------------+-----------+----------------+ | 2019-08-08 09:56:53 | 73 | 983 | | 2019-08-08 09:56:57 | 0 | 0 | | 2019-08-08 09:59:17 | 0 | 0 | | 2019-08-08 10:00:55 | 4072 | 40628 | | 2019-08-08 10:00:59 | 0 | 0 | | 2019-08-08 10:01:09 | 562 | 5800 | | 2019-08-08 10:01:11 | 606 | 6910 | | 2019-08-08 10:01:13 | 609 | 6875 | | 2019-08-08 10:01:15 | 625 | 7077 | | 2019-08-08 10:01:17 | 616 | 5800 | +---------------------+-----------+----------------+參數說明如下。
參數
說明
TIME
日期。
DATA_READ
資料讀取次數。
DATA_READ_TIME
資料讀取總時間。單位:μs。
DATA_READ_MAX_TIME
資料讀取最長時間。單位:μs。
DATA_READ_BYTES
資料讀取總大小。單位:byte。
DATA_WRITE
資料寫入次數。
DATA_WRITE_TIME
資料寫入總時間。單位:μs。
DATA_WRITE_MAX_TIME
資料寫入最長時間。單位:μs。
DATA_WRITE_BYTES
資料寫入總大小。單位:byte。