Top Banner
Performance Schema in MySQL Danil Zburivsky MySQL DBA and Team Lead at Pythian Tuesday, October 23, 12
43

Performance Schema in MySQL (Danil Zburivsky)

May 24, 2015

Download

Documents

Ontico
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Performance Schema in MySQL (Danil Zburivsky)

Performance Schema in MySQL Danil Zburivsky

MySQL DBA and Team Lead at Pythian

Tuesday, October 23, 12

Page 2: Performance Schema in MySQL (Danil Zburivsky)

About myself• MySQL DBA and Team

Lead at Pythian

• Managing dozens of customers and thousands of MySQL servers

• http://www.pythian.com/news/author/zburivsky/

• @zburivsky

Tuesday, October 23, 12

Page 3: Performance Schema in MySQL (Danil Zburivsky)

Debugging MySQL Performance

Tuesday, October 23, 12

Page 4: Performance Schema in MySQL (Danil Zburivsky)

MySQL is a great database, but instrumentation sucks

SHOW ENGINE INNODB STATUS

Slow query log

OS STATSSHOW

PROCESSLIST

Tuesday, October 23, 12

Page 5: Performance Schema in MySQL (Danil Zburivsky)

I think there is a problem with database...

Tuesday, October 23, 12

Page 6: Performance Schema in MySQL (Danil Zburivsky)

I think there is a problem with database...

• Identify timeframe (use trending tools)

Tuesday, October 23, 12

Page 7: Performance Schema in MySQL (Danil Zburivsky)

I think there is a problem with database...

• Identify timeframe (use trending tools)

• Collect data during incident

Tuesday, October 23, 12

Page 8: Performance Schema in MySQL (Danil Zburivsky)

I think there is a problem with database...

• Identify timeframe (use trending tools)

• Collect data during incident

• Collect more data

Tuesday, October 23, 12

Page 9: Performance Schema in MySQL (Danil Zburivsky)

I think there is a problem with database...

• Identify timeframe (use trending tools)

• Collect data during incident

• Collect more data

• Collect as much data as you can!

Tuesday, October 23, 12

Page 10: Performance Schema in MySQL (Danil Zburivsky)

I think there is a problem with database...

• Identify timeframe (use trending tools)

• Collect data during incident

• Collect more data

• Collect as much data as you can!

• Try to make sense of it

Tuesday, October 23, 12

Page 11: Performance Schema in MySQL (Danil Zburivsky)

I think there is a problem with database...

• Identify timeframe (use trending tools)

• Collect data during incident

• Collect more data

• Collect as much data as you can!

• Try to make sense of it

• Tune settings, SQL, hardware. Did it help?

Tuesday, October 23, 12

Page 12: Performance Schema in MySQL (Danil Zburivsky)

I think there is a problem with database...

• Identify timeframe (use trending tools)

• Collect data during incident

• Collect more data

• Collect as much data as you can!

• Try to make sense of it

• Tune settings, SQL, hardware. Did it help?

• I think there is a problem with database...

Tuesday, October 23, 12

Page 14: Performance Schema in MySQL (Danil Zburivsky)

What do “Big Boys” have?

• Oracle: SQL-traces, kernel events timings, tons of books on performance tuning

• SQL Server: SQL profiler, Data Management Views, Extended Events,tons of books on performance tuning

Tuesday, October 23, 12

Page 15: Performance Schema in MySQL (Danil Zburivsky)

Performance schema in MySQL 5.5

Tuesday, October 23, 12

Page 16: Performance Schema in MySQL (Danil Zburivsky)

The Idea

• Executing a query breaks down to hundreds of smaller tasks

• There are background tasks as well

• We want to instrument it all to know where server is spending time

Tuesday, October 23, 12

Page 17: Performance Schema in MySQL (Danil Zburivsky)

Implementation

• Instrumentation: measuring when event begins and ends

• Implemented in MySQL code on server end storage engine level

• Can be enabled/disabled or customized

Tuesday, October 23, 12

Page 18: Performance Schema in MySQL (Danil Zburivsky)

Schema and a storage engine+----------------------------------------------+| Tables_in_performance_schema |+----------------------------------------------+| cond_instances || events_waits_current || events_waits_history || events_waits_history_long || events_waits_summary_by_instance || events_waits_summary_by_thread_by_event_name || events_waits_summary_global_by_event_name || file_instances || file_summary_by_event_name || file_summary_by_instance || mutex_instances || performance_timers || rwlock_instances || setup_consumers || setup_instruments || setup_timers || threads |+----------------------------------------------+17 rows in set (0.00 sec)

Tuesday, October 23, 12

Page 19: Performance Schema in MySQL (Danil Zburivsky)

Schema and a storage engine+----------------------------------------------+| Tables_in_performance_schema |+----------------------------------------------+| cond_instances || events_waits_current || events_waits_history || events_waits_history_long || events_waits_summary_by_instance || events_waits_summary_by_thread_by_event_name || events_waits_summary_global_by_event_name || file_instances || file_summary_by_event_name || file_summary_by_instance || mutex_instances || performance_timers || rwlock_instances || setup_consumers || setup_instruments || setup_timers || threads |+----------------------------------------------+17 rows in set (0.00 sec)

Tuesday, October 23, 12

Page 20: Performance Schema in MySQL (Danil Zburivsky)

Schema and a storage engine+----------------------------------------------+| Tables_in_performance_schema |+----------------------------------------------+| cond_instances || events_waits_current || events_waits_history || events_waits_history_long || events_waits_summary_by_instance || events_waits_summary_by_thread_by_event_name || events_waits_summary_global_by_event_name || file_instances || file_summary_by_event_name || file_summary_by_instance || mutex_instances || performance_timers || rwlock_instances || setup_consumers || setup_instruments || setup_timers || threads |+----------------------------------------------+17 rows in set (0.00 sec)

Tuesday, October 23, 12

Page 21: Performance Schema in MySQL (Danil Zburivsky)

Schema and a storage engine+----------------------------------------------+| Tables_in_performance_schema |+----------------------------------------------+| cond_instances || events_waits_current || events_waits_history || events_waits_history_long || events_waits_summary_by_instance || events_waits_summary_by_thread_by_event_name || events_waits_summary_global_by_event_name || file_instances || file_summary_by_event_name || file_summary_by_instance || mutex_instances || performance_timers || rwlock_instances || setup_consumers || setup_instruments || setup_timers || threads |+----------------------------------------------+17 rows in set (0.00 sec)

Tuesday, October 23, 12

Page 22: Performance Schema in MySQL (Danil Zburivsky)

Schema and a storage engine+----------------------------------------------+| Tables_in_performance_schema |+----------------------------------------------+| cond_instances || events_waits_current || events_waits_history || events_waits_history_long || events_waits_summary_by_instance || events_waits_summary_by_thread_by_event_name || events_waits_summary_global_by_event_name || file_instances || file_summary_by_event_name || file_summary_by_instance || mutex_instances || performance_timers || rwlock_instances || setup_consumers || setup_instruments || setup_timers || threads |+----------------------------------------------+17 rows in set (0.00 sec)

Tuesday, October 23, 12

Page 23: Performance Schema in MySQL (Danil Zburivsky)

Schema and a storage engine+----------------------------------------------+| Tables_in_performance_schema |+----------------------------------------------+| cond_instances || events_waits_current || events_waits_history || events_waits_history_long || events_waits_summary_by_instance || events_waits_summary_by_thread_by_event_name || events_waits_summary_global_by_event_name || file_instances || file_summary_by_event_name || file_summary_by_instance || mutex_instances || performance_timers || rwlock_instances || setup_consumers || setup_instruments || setup_timers || threads |+----------------------------------------------+17 rows in set (0.00 sec)

Tuesday, October 23, 12

Page 24: Performance Schema in MySQL (Danil Zburivsky)

Instruments+------------------------------------------------------------+| NAME |+------------------------------------------------------------+| wait/synch/mutex/sql/PAGE::lock || wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_sync || wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_active || wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_pool |..... || wait/synch/rwlock/sql/LOCK_grant || wait/synch/rwlock/sql/LOGGER::LOCK_logger |

......| wait/synch/cond/sql/COND_thread_count | | wait/synch/cond/sql/COND_thread_cache |..... || wait/io/file/sql/binlog || wait/io/file/sql/binlog_index |+------------------------------------------------------------+

Tuesday, October 23, 12

Page 25: Performance Schema in MySQL (Danil Zburivsky)

Consumers

SELECT * FROM setup_consumers;+----------------------------------------------+---------+| NAME | ENABLED |+----------------------------------------------+---------+| events_waits_current | YES || events_waits_history | YES || events_waits_history_long | YES || events_waits_summary_by_thread_by_event_name | YES || events_waits_summary_by_event_name | YES || events_waits_summary_by_instance | YES || file_summary_by_event_name | YES || file_summary_by_instance | YES |+----------------------------------------------+---------+8 rows in set (0.00 sec)

Tuesday, October 23, 12

Page 26: Performance Schema in MySQL (Danil Zburivsky)

What are top wait events in my server?

SELECT COUNT_STAR, SUM_TIMER_WAIT, AVG_TIMER_WAIT FROM events_waits_summary_by_instance ORDER BY SUM_TIMER_WAIT DESC LIMIT 10;+---------------------------------------------+------------+-------------------+----------------+| EVENT_NAME | COUNT_STAR | SUM_TIMER_WAIT | AVG_TIMER_WAIT |+---------------------------------------------+-----------------------+---------------+---------|| wait/io/file/innodb/innodb_data_file | 3347631 | 13547848609831118 | 4046995803 || wait/synch/rwlock/innodb/index_tree_rw_lock | 69535441 | 2000129499580014 | 28764173 || wait/synch/mutex/innodb/buf_pool_mutex | 800909600 | 433331246983734 | 541048 || wait/synch/mutex/innodb/log_sys_mutex | 181356697 | 420610626124392 | 2319245 || wait/synch/rwlock/innodb/index_tree_rw_lock | 3060704 | 232839801243104 | 76073936 || wait/io/file/innodb/innodb_data_file | 84259 | 163336572508164 | 1938505946 || wait/synch/rwlock/innodb/btr_search_latch | 192529196 | 161285917556962 | 837721 || wait/synch/mutex/sql/LOCK_open | 285022231 | 154822982324406 | 543196 || wait/synch/mutex/innodb/kernel_mutex | 403820715 | 130291049763820 | 322645 || wait/synch/mutex/mysys/THR_LOCK::mutex | 285017708 | 121061567338910 | 424751 |+---------------------------------------------+------------+-------------------+----------------+10 rows in set (0.03 sec)

Tuesday, October 23, 12

Page 27: Performance Schema in MySQL (Danil Zburivsky)

innodb_buffer_pool_instances=10

SELECT * FROM events_waits_summary_by_instance ORDER BY SUM_TIMER_WAIT DESC LIMIT 10;+-----------------------------------------------+------------+-------------------+----------------+| EVENT_NAME | COUNT_STAR | SUM_TIMER_WAIT | AVG_TIMER_WAIT |+-----------------------------------------------+------------+-------------------+----------------+| wait/io/file/innodb/innodb_data_file | 3600080 | 14130028463169872 | 3924920685 || wait/synch/rwlock/innodb/index_tree_rw_lock | 69313641 | 2045091134703870 | 29504886 || wait/synch/mutex/innodb/trx_doublewrite_mutex | 6432834 | 592011487365760 | 92029654 || wait/synch/mutex/innodb/log_sys_mutex | 183016201 | 459928639055248 | 2513048 || wait/synch/rwlock/innodb/index_tree_rw_lock | 3239574 | 277212671866944 | 85570717 || wait/io/file/innodb/innodb_data_file | 400484 | 219787308922610 | 548804219 || wait/synch/rwlock/innodb/btr_search_latch | 190363676 | 183251774563990 | 962640 || wait/synch/mutex/sql/LOCK_open | 285022522 | 144911560909258 | 508421 || wait/synch/mutex/mysys/THR_LOCK::mutex | 285018012 | 130317830152708 | 457226 || wait/synch/mutex/innodb/kernel_mutex | 401734769 | 126815854421630 | 315670 |+-----------------------------------------------+------------+-------------------+----------------+10 rows in set (0.02 sec)

buf_pool_mutex is no longer in top 10 wait events

Tuesday, October 23, 12

Page 28: Performance Schema in MySQL (Danil Zburivsky)

Which files are being accessed the most?

mysql> SELECT SUM_NUMBER_OF_BYTES_READ, SUM_NUMBER_OF_BYTES_WRITE FROM file_summary_by_instance ORDER BY SUM_NUMBER_OF_BYTES_READ+SUM_NUMBER_OF_BYTES_WRITE DESC LIMIT 10;+------------------------------+--------------------------+---------------------------+| FILE_NAME |SUM_NUMBER_OF_BYTES_READ | SUM_NUMBER_OF_BYTES_WRITE |+------------------------------+--------------------------+---------------------------+| /var/lib/mysql/ibdata1 | 166920192 | 363649155072 || /var/lib/mysql/WIR.ibd | 180310720512 | 114136367104 || /var/lib/mysql/EMIWPR.ibd | 51803815936 | 71776468992 || /var/lib/mysql/EWAPR.ibd | 38596755456 | 54104932352 || /var/lib/mysql/OFPR.ibd | 24171593728 | 33964572672 || /var/lib/mysql/OFIR.ibd | 38002688000 | 14265303040 || /var/lib/mysql/EQPO.ibd | 12718882816 | 21407596544 || /var/lib/mysql/FIR.ibd | 19646103552 | 10337140736 || /var/lib/mysql/EIR.ibd | 14708899840 | 12814794752 || /var/lib/mysql/FPR.ibd | 6360350720 | 9764585472 |+------------------------------+--------------------------+---------------------------+10 rows in set (0.01 sec)

Tuesday, October 23, 12

Page 29: Performance Schema in MySQL (Danil Zburivsky)

Threads table(performance_schema) > SELECT * FROM threads;+-----------+----------------+----------------------------------------+| THREAD_ID | PROCESSLIST_ID | NAME |+-----------+----------------+----------------------------------------+| 0 | 0 | thread/sql/main || 12 | 0 | thread/innodb/srv_lock_timeout_thread || 14 | 0 | thread/innodb/srv_monitor_thread || 16 | 0 | thread/innodb/srv_purge_thread || 13 | 0 | thread/innodb/srv_error_monitor_thread || 2 | 0 | thread/innodb/io_handler_thread || 1 | 0 | thread/innodb/io_handler_thread || 9 | 0 | thread/innodb/io_handler_thread || 25 | 8 | thread/sql/one_connection || 3 | 0 | thread/innodb/io_handler_thread || 15 | 0 | thread/innodb/srv_master_thread || 10 | 0 | thread/innodb/io_handler_thread || 5 | 0 | thread/innodb/io_handler_thread || 8 | 0 | thread/innodb/io_handler_thread || 7 | 0 | thread/innodb/io_handler_thread || 17 | 0 | thread/sql/signal_handler || 4 | 0 | thread/innodb/io_handler_thread || 6 | 0 | thread/innodb/io_handler_thread |+-----------+----------------+----------------------------------------+18 rows in set (0.00 sec)

Tuesday, October 23, 12

Page 30: Performance Schema in MySQL (Danil Zburivsky)

Average wait per thread (I)

SELECT e.THREAD_ID, e.EVENT_NAME, MAX(e.AVG_TIMER_WAIT)FROM events_waits_summary_by_thread_by_event_name e LEFT JOIN threads t ON t.THREAD_ID = e.THREAD_IDWHERE event_name LIKE 'wait/synch/mutex/innodb/%' AND t.NAME='thread/sql/one_connection'AND AVG_TIMER_WAIT > 0GROUP BY t.thread_id, e.EVENT_NAMEORDER BY t.thread_id, MAX(e.AVG_TIMER_WAIT)

Tuesday, October 23, 12

Page 31: Performance Schema in MySQL (Danil Zburivsky)

Average wait per thread (II)

+-----------+-------------------------------------------------------+-------------------------+| THREAD_ID | EVENT_NAME | MAX(AVG_TIMER_WAIT) |+-----------+-------------------------------------------------------+-------------------------+| 27 | wait/synch/mutex/innodb/mutex_list_mutex | 49463 || 27 | wait/synch/mutex/innodb/purge_sys_bh_mutex | 83247 |

.....

.....| 27 | wait/synch/mutex/innodb/ibuf_bitmap_mutex | 115681 || 27 | wait/synch/mutex/innodb/ibuf_pessimistic_insert_mutex | 168537 || 27 | wait/synch/mutex/innodb/ibuf_mutex | 282400 || 27 | wait/synch/mutex/innodb/log_sys_mutex | 1690694 |----------------------------------------------------------------------------------------------| 28 | wait/synch/mutex/innodb/mutex_list_mutex | 49504 || 28 | wait/synch/mutex/innodb/flush_list_mutex | 52375 || 28 | wait/synch/mutex/innodb/log_flush_order_mutex | 62040 |

.....

.....| 28 | wait/synch/mutex/innodb/autoinc_mutex | 63012 || 28 | wait/synch/mutex/innodb/dict_sys_mutex | 181203 || 28 | wait/synch/mutex/innodb/ibuf_mutex | 222376 || 28 | wait/synch/mutex/innodb/innobase_share_mutex | 239514 || 28 | wait/synch/mutex/innodb/ibuf_pessimistic_insert_mutex | 266684 || 28 | wait/synch/mutex/innodb/log_sys_mutex | 1718503 |

Tuesday, October 23, 12

Page 32: Performance Schema in MySQL (Danil Zburivsky)

Average wait per thread (III)

+-----------+--------------------------------------------------+-------------------------+| THREAD_ID | EVENT_NAME | MAX(ebt.AVG_TIMER_WAIT) |+-----------+--------------------------------------------------+-------------------------+| 27 | wait/synch/mutex/innodb/ibuf_mutex | 55872 || 27 | wait/synch/mutex/innodb/flush_list_mutex | 59495 || 27 | wait/synch/mutex/innodb/mutex_list_mutex | 59499 || 27 | wait/synch/mutex/innodb/autoinc_mutex | 64136 |

.....

.....| 27 | wait/synch/mutex/innodb/ibuf_bitmap_mutex | 88242 || 27 | wait/synch/mutex/innodb/buf_pool_mutex | 101598 || 27 | wait/synch/mutex/innodb/kernel_mutex | 148332 || 27 | wait/synch/mutex/innodb/log_sys_mutex | 4671112 |-----------------------------------------------------------------------------------------| 28 | wait/synch/mutex/innodb/ibuf_mutex | 42886 || 28 | wait/synch/mutex/innodb/mutex_list_mutex | 56646 || 28 | wait/synch/mutex/innodb/flush_list_mutex | 58105 || 28 | wait/synch/mutex/innodb/autoinc_mutex | 66873 |

....

....| 28 | wait/synch/mutex/innodb/purge_sys_bh_mutex | 83545 || 28 | wait/synch/mutex/innodb/ibuf_bitmap_mutex | 87697 || 28 | wait/synch/mutex/innodb/buf_pool_mutex | 101365 || 28 | wait/synch/mutex/innodb/kernel_mutex | 149135 || 28 | wait/synch/mutex/innodb/log_sys_mutex | 4829134 |

innodb_change_buffering = none [Don’t try this at home! ]

Tuesday, October 23, 12

Page 33: Performance Schema in MySQL (Danil Zburivsky)

Picoseconds, shmicosecond! ps_helper to rescue!

• http://www.markleith.co.uk/ps_helper/

• Great examples of using performance_schema

• Useful tools for converting time, bytes, paths into human readable format

Tuesday, October 23, 12

Page 34: Performance Schema in MySQL (Danil Zburivsky)

Example: top_global_io_consumers_by_bytes_usage

(ps_helper) > SELECT event_name, total_read, avg_read, total_written, avg_written,avg_latency FROM top_global_io_consumers_by_bytes_usage;+-------------------------+------------+-----------+---------------+-------------+-------------+| event_name | total_read | avg_read | total_written | avg_written | avg_latency |+-------------------------+------------+-----------+---------------+-------------+-------------+| innodb/innodb_data_file | 10.76 GiB | 16.00 KiB | 16.05 GiB | 30.90 KiB | 10.96 ms || innodb/innodb_log_file | 68.00 KiB | 11.33 KiB | 1.03 GiB | 369.66 KiB | 2.33 ms || myisam/dfile | 197.79 KiB | 8.60 KiB | 187.04 KiB | 5.84 KiB | 9.89 µs || sql/FRM | 142.28 KiB | 491 bytes | 4.50 KiB | 242 bytes | 3.66 µs || sql/ERRMSG | 43.68 KiB | 14.56 KiB | 0 bytes | 0 bytes | 15.42 µs || myisam/kfile | 13.22 KiB | 226 bytes | 5.96 KiB | 24 bytes | 8.26 µs || mysys/charset | 17.83 KiB | 17.83 KiB | 0 bytes | 0 bytes | 10.68 µs || sql/partition | 1.06 KiB | 32 bytes | 0 bytes | 0 bytes | 4.38 µs || sql/pid | 0 bytes | 0 bytes | 6 bytes | 6 bytes | 34.78 µs || sql/global_ddl_log | 0 bytes | 0 bytes | 0 bytes | 0 bytes | 3.69 µs || archive/data | 0 bytes | 0 bytes | 0 bytes | 0 bytes | 4.35 µs || sql/dbopt | 0 bytes | 0 bytes | 0 bytes | 0 bytes | 4.55 µs || sql/casetest | 0 bytes | 0 bytes | 0 bytes | 0 bytes | 28.08 µs |+-------------------------+------------+-----------+---------------+-------------+-------------+13 rows in set (0.00 sec)

Tuesday, October 23, 12

Page 35: Performance Schema in MySQL (Danil Zburivsky)

No free lunch: PFS overhead

• Instrumentation doesn’t come for free

• In CPU-bound workloads overhead can be ~15-20%

• In IO-bound — 5%-8%

• Significant improvements in 5.6

Tuesday, October 23, 12

Page 36: Performance Schema in MySQL (Danil Zburivsky)

Performance schema in MySQL 5.6

Tuesday, October 23, 12

Page 37: Performance Schema in MySQL (Danil Zburivsky)

What’s new in 5.6?

• performance_schema enabled by default!

• Less overhead: 5%-10% for CPU-bound workload

• Statements, Stages, Actors and Objects

Tuesday, October 23, 12

Page 38: Performance Schema in MySQL (Danil Zburivsky)

Actors: filter events by user

(performance_schema) > SELECT * FROM setup_actors;+------+------+------+| HOST | USER | ROLE |+------+------+------+| % | % | % |+------+------+------+1 row in set (0.00 sec)

Tuesday, October 23, 12

Page 39: Performance Schema in MySQL (Danil Zburivsky)

Objects: filter out events by database/table

(performance_schema) > SELECT * FROM setup_objects;+-------------+--------------------+-------------+---------+-------+| OBJECT_TYPE | OBJECT_SCHEMA | OBJECT_NAME | ENABLED | TIMED |+-------------+--------------------+-------------+---------+-------+| TABLE | mysql | % | NO | NO || TABLE | performance_schema | % | NO | NO || TABLE | information_schema | % | NO | NO || TABLE | % | % | YES | YES |+-------------+--------------------+-------------+---------+-------+4 rows in set (0.00 sec)

Tuesday, October 23, 12

Page 40: Performance Schema in MySQL (Danil Zburivsky)

StatementsSELECT * FROM events_statements_summary_by_digest\G

*************************** 4. row *************************** DIGEST: f60b0866d7cbd78d39caf5fb52f43bfb DIGEST_TEXT: SELECT * FROM `table_io_waits_summary_by_index_usage` ORDER BY `SUM_TIMER_WAIT` DESC LIMIT ? COUNT_STAR: 1 SUM_TIMER_WAIT: 511539000 MIN_TIMER_WAIT: 511539000 AVG_TIMER_WAIT: 511539000 MAX_TIMER_WAIT: 511539000 SUM_LOCK_TIME: 72000000 SUM_ERRORS: 0 SUM_WARNINGS: 0 SUM_ROWS_AFFECTED: 0 SUM_ROWS_SENT: 5 SUM_ROWS_EXAMINED: 91SUM_CREATED_TMP_DISK_TABLES: 0 SUM_CREATED_TMP_TABLES: 0 SUM_SELECT_FULL_JOIN: 0 SUM_SELECT_FULL_RANGE_JOIN: 0 SUM_SELECT_RANGE: 0 SUM_SELECT_RANGE_CHECK: 0 SUM_SELECT_SCAN: 1 SUM_SORT_MERGE_PASSES: 0 SUM_SORT_RANGE: 0 SUM_SORT_ROWS: 5 SUM_SORT_SCAN: 1 SUM_NO_INDEX_USED: 1 SUM_NO_GOOD_INDEX_USED: 0 FIRST_SEEN: 2012-10-16 21:50:13 LAST_SEEN: 2012-10-16 21:50:13

Tuesday, October 23, 12

Page 41: Performance Schema in MySQL (Danil Zburivsky)

Summary. Pros.

• Provides insight into internal server metric

• Flexible

• Relational model allows to build your own views on top of this data

Tuesday, October 23, 12

Page 42: Performance Schema in MySQL (Danil Zburivsky)

Summary. Cons.

• Steep learning curve: not very well documented

• Overhead for CPU-bound loads can be significant

Tuesday, October 23, 12

Page 43: Performance Schema in MySQL (Danil Zburivsky)

Thank you!

Tuesday, October 23, 12