Extending the SYS schema to show metadata locks
2016-08-16 22:39
218 查看
http://mysqlserverteam.com/extending-the-sys-schema-to-show-metadata-locks/
Starting with MySQL 5.7, performance_schema has been enhanced to instrument
metadata locks , and can be turned on by adding the following line to your my.cnf file:
(At runtime, it can also be enabled by modifying the setup_instruments table in performance_schema.)
From here, you can now query performance_schema.metadata_locks to reveal all currently open metadata locks on your server:
As I have previously
demonstrated , SYS is the DBA’s companion toperformance_schema and contains a number of views that are more task-oriented . Seeing the raw locks is not always immediately useful, what is preferable is a view that shows this next to user
sessions.
SYS has a view called session , but in this example I am going to join metadata locks to sys.processlist instead. Processlist is a superset of session, that also includes background threads.
On my testing system I have saved this query as a view calledsys.session_metadata_locks . I have also opened BUG
#80823 so that the sys developers can evaluate if this should be included as part of a future release.
It is always interesting to hear from DBAs on what information they find useful to be included in views. Please try it out, and let me know your feedback
Starting with MySQL 5.7, performance_schema has been enhanced to instrument
metadata locks , and can be turned on by adding the following line to your my.cnf file:
performance-schema-instrument='wait/lock/metadata/sql/%=ON'
(At runtime, it can also be enabled by modifying the setup_instruments table in performance_schema.)
From here, you can now query performance_schema.metadata_locks to reveal all currently open metadata locks on your server:
mysql> select * fromperformance_schema.metadata_locks\G *************************** 1. row *************************** OBJECT_TYPE: TABLE OBJECT_SCHEMA: wordpress_tockerca OBJECT_NAME: wp_posts OBJECT_INSTANCE_BEGIN: 139671129331184 LOCK_TYPE: SHARED_READ LOCK_DURATION: TRANSACTION LOCK_STATUS: GRANTED SOURCE: sql_parse.cc:5920 OWNER_THREAD_ID: 1817 OWNER_EVENT_ID: 25 *************************** 2. row *************************** OBJECT_TYPE: USERLEVELLOCK OBJECT_SCHEMA: NULL OBJECT_NAME: abcd OBJECT_INSTANCE_BEGIN: 139671129776448 LOCK_TYPE: EXCLUSIVE LOCK_DURATION: EXPLICIT LOCK_STATUS: GRANTED SOURCE: item_func.cc:5636 OWNER_THREAD_ID: 1817 OWNER_EVENT_ID: 26 *************************** 3. row *************************** OBJECT_TYPE: TABLE OBJECT_SCHEMA: performance_schema OBJECT_NAME: metadata_locks OBJECT_INSTANCE_BEGIN: 139672612788784 LOCK_TYPE: SHARED_READ LOCK_DURATION: TRANSACTION LOCK_STATUS: GRANTED SOURCE: sql_parse.cc:5920 OWNER_THREAD_ID: 1128 OWNER_EVENT_ID: 22 3 rowsin set (0.00 sec)
Using SYS
As I have previouslydemonstrated , SYS is the DBA’s companion toperformance_schema and contains a number of views that are more task-oriented . Seeing the raw locks is not always immediately useful, what is preferable is a view that shows this next to user
sessions.
SYS has a view called session , but in this example I am going to join metadata locks to sys.processlist instead. Processlist is a superset of session, that also includes background threads.
mysql> SELECTps.*, lock_summary.lock_summary FROMsys.processlistps INNERJOIN (SELECTowner_thread_id, GROUP_CONCAT( DISTINCTCONCAT(mdl.LOCK_STATUS, ' ', mdl.lock_type, ' on ', IF(mdl.object_type='USER LEVEL LOCK', CONCAT(mdl.object_name, ' (user lock)'), CONCAT(mdl.OBJECT_SCHEMA, '.', mdl.OBJECT_NAME))) ORDERBYmdl.object_typeASC, mdl.LOCK_STATUSASC, mdl.lock_typeASC SEPARATOR '\n' ) as lock_summaryFROMperformance_schema.metadata_locksmdlGROUPBYowner_thread_id) lock_summaryON (ps.thd_id=lock_summary.owner_thread_id)\G *************************** 1. row *************************** thd_id: 1817 conn_id: 1793 user: root@localhost db: wordpress_tockerca command: Sleep state: NULL time: 317 current_statement: NULL statement_latency: NULL progress: NULL lock_latency: 0 ps rows_examined: 0 rows_sent: 1 rows_affected: 0 tmp_tables: 0 tmp_disk_tables: 0 full_scan: NO last_statement: selectget_lock('abcd', 10) last_statement_latency: 315.92 us current_memory: 259.14 KiB last_wait: NULL last_wait_latency: NULL source: NULL trx_latency: 6.00 m trx_state: ACTIVE trx_autocommit: NO pid: 21518 program_name: mysql lock_summary: GRANTEDSHARED_READonwordpress_tockerca.wp_posts GRANTEDEXCLUSIVEonabcd (userlock) *************************** 2. row *************************** thd_id: 1128 conn_id: 1104 user: root@localhost db: NULL command: Query state: Sendingdata time: 0 current_statement: SELECTps.*, lock_summary.loc ... =lock_summary.owner_thread_id) statement_latency: 11.04 ms progress: NULL lock_latency: 4.08 ms rows_examined: 0 rows_sent: 0 rows_affected: 0 tmp_tables: 6 tmp_disk_tables: 2 full_scan: YES last_statement: NULL last_statement_latency: NULL current_memory: 2.97 MiB last_wait: NULL last_wait_latency: NULL source: NULL trx_latency: 70.00 ms trx_state: ACTIVE trx_autocommit: YES pid: 21498 program_name: mysql lock_summary: GRANTEDSHAREDonsys.format_statement GRANTEDSHAREDonsys.format_time GRANTEDSHAREDonsys.format_bytes GRANTEDSHAREDonsys.sys_get_config GRANTEDSHARED_READonsys.processlist GRANTEDSHARED_READonperformance_schema.threads GRANTEDSHARED_READonperformance_schema.events_waits_current GRANTEDSHARED_READonperformance_schema.events_stages_current GRANTEDSHARED_READonperformance_schema.events_statements_current GRANTEDSHARED_READonperformance_schema.events_transactions_current GRANTEDSHARED_READonsys.x$memory_by_thread_by_current_bytes GRANTEDSHARED_READonperformance_schema.session_connect_attrs GRANTEDSHARED_READonperformance_schema.metadata_locks GRANTEDSHARED_READonsys.sys_config GRANTEDSHARED_READonperformance_schema.memory_summary_by_thread_by_event_name 2 rowsin set (0.09 sec)
On my testing system I have saved this query as a view calledsys.session_metadata_locks . I have also opened BUG
#80823 so that the sys developers can evaluate if this should be included as part of a future release.
It is always interesting to hear from DBAs on what information they find useful to be included in views. Please try it out, and let me know your feedback
相关文章推荐
- 良好的代码习惯(三)
- IOS回调白名单URL scheme
- 网络爬虫360手机助手搜索功能
- set/multiset
- Android——使用Spinner实现下拉列表
- SecureCRT校准四轴电调
- Android自定义View——圆形进度条式按钮
- 关于静态代码块,非静态代码块,构造函数的多态表现问题
- tjut 3040
- 第九节 任务实例与任务分配
- Day14、枚举、联合、二级指针、回调函数、动态内存分配
- 0 1 背包问题
- 【机器学习】k-近邻算法笔记
- 【Windows编程】球球大作战(一) 需求设计
- C#语法之Linq查询基础二
- 良好的代码习惯(二)
- Idea Class Hierarchy Filter
- 洛谷 P1007 独木桥
- 笔记(1):基于梯度的优化方法
- Java基础之(二十九)Java集合类