如果发现锁争用比较严重,如InnoDB_row_lock_waits和InnoDB_row_lock_time_avg的值比较高,还可以通过设置InnoDB Monitors 来进一步观察发生锁冲突的表、数据行等,并分析锁争用的原因 。
锁冲突的表、数据行等,并分析锁争用的原因 。具体方法如下:
mysql> create table InnoDB_monitor(a INT) engine=InnoDB;然后就可以用下面的语句来进行查看:
mysql> show engine InnoDB status;监视器可以通过发出下列语句来停止查看:
mysql> drop table InnoDB_monitor;设置监视器后,会有详细的当前锁等待的信息,包括表名、锁类型、锁定记录的情况等,便于进行进一步的分析和问题的确定 。可能会有读者朋友问为什么要先创建一个叫InnoDB_monitor的表呢?因为创建该表实际上就是告诉InnoDB我们开始要监控他的细节状态了,然后InnoDB就会将比较详细的事务以及锁定信息记录进入MySQL的errorlog中,以便我们后面做进一步分析使用 。打开监视器以后,默认情况下每15秒会向日志中记录监控的内容,如果长时间打开会导致.err文件变得非常的巨大,所以用户在确认问题原因之后,要记得删除监控表以关闭监视器,或者通过使用“--console”选项来启动服务器以关闭写日志文件 。
推荐阅读
- tvb当红女星有哪些 tvb明星排名女
- MySQL不为人知的主键与唯一索引约束
- 安溪产茶始于唐末 至明代茶叶盛产 并有了名气明末清初
- 微服务架构下,Mysql读写分离后,数据库CPU飙升卡壳问题解析
- 如何查看磁盘上的MySQL表大小
- 阿里P8架构师谈:MySQL数据库的索引原理、与慢SQL优化的5大原则
- 玻璃门斜了怎么调整 门用久有点倾斜了怎么调整
- Trim指令是如何提高固态硬盘寿命的?
- 为什么分布式一定要有Redis?
- 男性心理要健康 判断有标准
