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过滤出当前已经被锁定的表 。

文章插图
- 2、查看数据库中表的状态:SHOW STATUS LIKE '%table%',如图所示 。需要特别注意的是Table_locks_waited 指的是不能立即获取表级锁而需要等待的次数,如果等待的次数非常大则说明可能存在锁争抢的情况,如果是频繁的出现锁争抢则对应用程序的并发性能影响很大 。

文章插图
- 3、查看数据库中锁的信息:SHOW STATUS LIKE '%lock%',如图所示 。

文章插图
- 4、查看数据库中的表被扫描的情况:show global status like 'handler_read%',如图所示,查询的结果数据也可以用来评估数据库中索引的使用情况 。查询的结果数据说明如表所示 。

文章插图
查询结果项
描述
Handler_read_first
从索引中读取第一项的次数,如果该值非常高,表明服务器正在执行大量的全索引扫描,该值一般不宜太高
Handler_read_key
基于键读取数据行的请求数,该值如果越高则表明大量的查询都走了索引 。如果越低,表示索引的利用很低,该值一般越高越好
Handler_read_last
读取索引中最后一个键的请求数
Handler_read_next
按键顺序读取下一行的请求数,如果查询都走了索引,那么该值将不断递增
Handler_read_prev
按键顺序读取前一行的请求数(倒序读取数据),一般用于评估执行ORDER BY … DESC的次数
推荐阅读
- 如何通过Java导出带格式的 Excel 数据到 Word 表格
- 暗黑破坏神:不朽鲁莽的斥候奇遇事件怎么玩
- 适合打游戏的5g手机2000左右_2000左右适合玩游戏的5g手机
- 东繁体字笔画|繁体的东怎么写
- 刚刚出壳的小鸡苗该怎么养(小鸡苗刚回来怎样管理)
- 如何做好小雏鸡的饲养管理(雏鸡的饲养管理关键技术)
- 小鸡怎么养才粘人(街上卖的2元一只的小鸡怎么养)
- 一星期的小鸡怎么养(街上买的小鸡怎么养)
- 小鸡怎么喂养才能活得久(40天小鸡的喂养方式)
- 1.nginx学习