lock_mode
锁的模式,锁的模式一般包含:
行级锁:包括S(共享锁)、X(排它锁)、IS(意向共享锁)、IX(意向排它锁) 。
表级锁:包括S_GAP(共享间隙锁)、X_GAP(排它间隙锁)、IS_GAP(意向共享间隙锁)、IX_GAP(意向排它间隙锁) 和 AUTO_INC(自动递增锁)
lock_type
锁的类型 。包括RECORD(行级锁)和TABLE(表级锁)
lock_table
当前被锁定的或者包含锁定记录的表的名称
lock_index
当 LOCK_TYPE为RECORD 时,表示锁定的索引的名称,否则直接返回NULL
lock_space
当 LOCK_TYPE为RECORD 时,表示锁定行的表空间 ID,否则直接返回NULL
lock_page
当 LOCK_TYPE为RECORD时,表示锁定记录行的页数,否则直接返回NULL
lock_rec
当 LOCK_TYPE为RECORD时,表示锁定的数据行的数量
lock_data
当 LOCK_TYPE为RECORD时,表示锁定记录行的主键
MySQL系统数据库information_schema的innodb_lock_waits表中记录了innodb数据库引擎当前运行的数据库事务等待锁的情况,innodb_lock_waits表中包含的常用字段说明如表所示 。本文作者:张永清, 转载请注明: https://www.cnblogs.com/laoqing/p/16880718.html 来源于博客园 ,本文摘选自《软件性能测试分析与调优实践之路》
表innodb_lock_waits表中包含的常用字段说明
字段
描述
requesting_trx_id
请求事务的 ID
Requested_lock_id
事务所等待的锁定的 ID 。可以和 INNODB_LOCKS 表关联查询
Blocking_trx_id
阻塞事务的 ID
Blocking_lock_id
阻塞了另一事务的运行的事务的锁的 ID
在数据库中出现死锁时,经常需要通过查询innodb_trx、innodb_locks、innodb_lock_waits这三张表来找出在执行什么事务操作时导致了死锁,例如执行如下SQL可以列出数据库中所有事务的等待和锁定记录 。
--本文作者:张永清, 转载请注明: https://www.cnblogs.com/laoqing/p/16880718.html --来源于博客园 ,本文摘选自《软件性能测试分析与调优实践之路》SELECTr.trx_isolation_level,/*事务隔离级别*/r.trx_id AS waiting_trx_id,/*正处于等待中的事务id*/r.trx_mysql_thread_id AS waiting_trx_thread, /*正处于等待中的数据库线程id*/r.trx_state AS waiting_trx_state, /*正处于等待中的事务的状态*/lr.lock_mode AS waiting_trx_lock_mode,/*正处于等待中的事务的锁定模式*/lr.lock_type AS waiting_trx_lock_type,/*正处于等待中的事务的锁定类型*/lr.lock_table AS waiting_trx_lock_table,/*正处于等待中的事务将锁定的表*/lr.lock_index AS waiting_trx_lock_index,/*正处于等待中的事务将锁定的索引*/r.trx_query AS waiting_trx_SQL,/*正处于等待中的事务将执行的SQL*/b.trx_id AS blocking_trx_id,/*正处于锁定中的事务id*/b.trx_mysql_thread_id AS blocking_trx_thread,/*正处于锁定中的线程id*/b.trx_state AS blocking_trx_state,/*正处于锁定中的事务的状态*/lb.lock_mode AS blocking_trx_lock_mode,/*正处于锁定中的事务的锁定模式*/lb.lock_type AS blocking_trx_lock_type,/*正处于锁定中的事务的锁定类型*/lb.lock_table AS blocking_trx_lock_table,/*正处于锁定中的事务已经锁定的表*/lb.lock_index AS blocking_trx_lock_index,/*正处于锁定中的事务已经锁定的索引*/b.trx_query AS blocking_sql /*正处于锁定中的事务在执行的SQL*/FROMinformation_schema.innodb_lock_waits wtINNER JOIN information_schema.innodb_trx bON b.trx_id = wt.blocking_trx_idINNER JOIN information_schema.innodb_trx rON r.trx_id = wt.requesting_trx_idINNER JOIN information_schema.innodb_locks lbON lb.lock_trx_id = wt.blocking_trx_idINNER JOIN information_schema.innodb_locks lrON lr.lock_trx_id = wt.requesting_trx_id;1.3、MySQL中数据库表的监控
- 1、查看数据库中当前打开了哪些表: show OPEN TABLES ,如图所示 。另外还可以通过show OPEN TABLES where In_use > 0过滤出当前已经被锁定的表 。
经验总结扩展阅读
- 2023高考成绩查询时间及入口
- 如何通过Java导出带格式的 Excel 数据到 Word 表格
- 2023高考成绩什么时候公布
- 百度网盘会员到期后超过的文件会怎样
- 2023年1月14日北小年是出行吉日吗
- 卫生间装什么颜色瓷砖好看 卫生间地砖用多大尺寸的砖比较好
- 2023年1月15日是动土黄道吉日吗
- 祝愿妈妈身体健康的说说 关心妈妈身体健康的句子
- 验房发现的问题没解决可以先收房吗 交房可以找第三方验房吗
- 响亮有气势8个字口号 阳光积极向上的短语