MySQL使用event等待事件進行資料庫效能診斷

abstractcyj發表於2021-12-29

首先將performance_schema這個資料庫下的需要進行跟蹤的指標開啟:

update setup_consumers set enabled='yes'  where name like '%wait%';

select * from setup_consumers where  name like '%wait%';


建立一個檢視方便後續查詢:

create view sys.test_waits as select sum(timer_wait) as timer_wait, sum(number_of_bytes) as numer_of_bytes, event_name, operation from performance_schema.events_waits_current where event_name != 'idle'

group by event_name, operation;


查詢:
select sys.format_time(timer_wait), sys.format_bytes(numer_of_bytes), event_name, operation from sys.test_waits order by timer_wait;


當我執行壓測時效果如下:

mysql> select sys.format_time(timer_wait), sys.format_bytes(numer_of_bytes), event_name, operation from sys.test_waits order by timer_wait;

+-----------------------------+----------------------------------+--------------------------------------+---------------+

| sys.format_time(timer_wait) | sys.format_bytes(numer_of_bytes) | event_name                           | operation     |

+-----------------------------+----------------------------------+--------------------------------------+---------------+

| 1.57 us                     | NULL                             | wait/lock/table/sql/handler          | read external |

| 2.02 us                     | 8.00 KiB                         | wait/io/file/sql/binlog              | read          |

| 2.55 us                     |  512 bytes                       | wait/io/file/innodb/innodb_log_file  | write         |

| 9.19 us                     | 16.00 KiB                        | wait/io/file/innodb/innodb_data_file | write         |

| 33.78 us                    |    1 bytes                       | wait/io/table/sql/handler            | delete        |

| 104.83 us                   | 128.00 KiB                       | wait/io/file/innodb/innodb_data_file | read          |

| 2.35 ms                     | NULL                             | wait/io/file/innodb/innodb_log_file  | sync          |

| 6.45 ms                     | NULL                             | wait/io/file/innodb/innodb_data_file | sync          |

| 13.69 ms                    |    1 bytes                       | wait/io/table/sql/handler            | fetch         |

+-----------------------------+----------------------------------+--------------------------------------+---------------+

9 rows in set (0.01 sec)


mysql> select sys.format_time(timer_wait), sys.format_bytes(numer_of_bytes), event_name, operation from sys.test_waits order by timer_wait;

+-----------------------------+----------------------------------+--------------------------------------+-----------+

| sys.format_time(timer_wait) | sys.format_bytes(numer_of_bytes) | event_name                           | operation |

+-----------------------------+----------------------------------+--------------------------------------+-----------+

| 2.12 us                     | 8.00 KiB                         | wait/io/file/sql/binlog              | read      |

| 44.06 us                    | 16.00 KiB                        | wait/io/file/innodb/innodb_data_file | write     |

| 53.48 us                    | 8.00 KiB                         | wait/io/file/innodb/innodb_log_file  | write     |

| 140.21 us                   | 128.00 KiB                       | wait/io/file/innodb/innodb_data_file | read      |

| 2.19 ms                     | NULL                             | wait/io/file/innodb/innodb_log_file  | sync      |

| 3.6 ms                      | NULL                             | wait/io/file/innodb/innodb_data_file | sync      |

+-----------------------------+----------------------------------+--------------------------------------+-----------+


摘自: 《千金良方:MySQL效能優化金字塔法則》


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8520577/viewspace-2849947/,如需轉載,請註明出處,否則將追究法律責任。

相關文章