热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql死锁自动检测_MySQLInnoDB设置死锁检测的方法

死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,可以认为如果一个资源被锁定,它总会在以后某个时间被释放。而死锁发生在当多个进程访问同一

死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,可以认为如果一个资源被锁定,它总会在以后某个时间被释放。而死锁发生在当多个进程访问同一数据库时,其中每个进程拥有的锁都是其他进程所需的,由此造成每个进程都无法继续下去。

InnoDB的并发写操作会触发死锁,InnoDB也提供了死锁检测机制,可以通过设置innodb_deadlock_detect参数可以打开或关闭死锁检测:

innodb_deadlock_detect = on  打开死锁检测,数据库发生死锁时自动回滚(默认选项)

innodb_deadlock_detect = off  关闭死锁检测,发生死锁的时候,用锁超时来处理,通过设置锁超时参数innodb_lock_wait_timeout可以在超时发生时回滚被阻塞的事务

还可以通过设置InnDB Monitors来进一步观察锁冲突详细信息

设置InnoDB Monitors方法

建立test库

mysql>create database test;

Query OK, 1 row affected (0.20 sec)

mysql> use test

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> create table innodb_monitor(a INT) engine=innodb;

Query OK, 0 rows affected (1.04 sec)

mysql> create table innodb_tablespace_monitor(a INT) engine=innodb;

Query OK, 0 rows affected (0.70 sec)

mysql> create table innodb_lock_monitor(a INT) engine=innodb;

Query OK, 0 rows affected (0.36 sec)

mysql> create table innodb_table_monitor(a INT) engine=innodb;

Query OK, 0 rows affected (0.08 sec)

可以通过show engine innodb status命令查看死锁信息

mysql> show engine innodb status \G

*************************** 1. row ***************************

Type: InnoDB

Name:

Status:

=====================================

2018-05-10 09:17:10 0x7f1fbc21a700 INNODB MONITOR OUTPUT

=====================================

Per second averages calculated from the last 46 seconds

-----------------

BACKGROUND THREAD

-----------------

srv_master_thread loops: 53 srv_active, 0 srv_shutdown, 240099 srv_idle

srv_master_thread log flush and writes: 0

----------

SEMAPHORES

----------

OS WAIT ARRAY INFO: reservation count 2007

OS WAIT ARRAY INFO: signal count 1987

RW-shared spins 3878, rounds 5594, OS waits 1735

RW-excl spins 3, rounds 91, OS waits 4

RW-sx spins 1, rounds 30, OS waits 1

Spin rounds per wait: 1.44 RW-shared, 30.33 RW-excl, 30.00 RW-sx

------------

TRANSACTIONS

------------

Trx id counter 78405

Purge done for trx&#39;s n:o <78404 undo n:o <10 state: running but idle

History list length 21

LIST OF TRANSACTIONS FOR EACH SESSION:

---TRANSACTION 421249967052640, not started

0 lock struct(s), heap size 1136, 0 row lock(s)

--------

FILE I/O

--------

I/O thread 0 state: waiting for completed aio requests (insert buffer thread)

I/O thread 1 state: waiting for completed aio requests (log thread)

I/O thread 2 state: waiting for completed aio requests (read thread)

.............................................................................

.............................................................................

.............................................................................

来自 “ ITPUB博客 ” &#xff0c;链接&#xff1a;http://blog.itpub.net/15498/viewspace-2154256/&#xff0c;如需转载&#xff0c;请注明出处&#xff0c;否则将追究法律责任。



推荐阅读
  • 本文探讨了在Windows系统中运行Apache服务器时频繁出现崩溃的问题,并提供了多种可能的解决方案和建议。错误日志显示多个子进程因达到最大请求限制而退出。 ... [详细]
  • 电商高并发解决方案详解
    本文以京东为例,详细探讨了电商中常见的高并发解决方案,包括多级缓存和Nginx限流技术,旨在帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • flea,frame,db,使用,之 ... [详细]
  • RTThread线程间通信
    线程中通信在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取& ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • 关于进程的复习:#管道#数据的共享Managerdictlist#进程池#cpu个数1#retmap(func,iterable)#异步自带close和join#所有 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 本文介绍了实时流协议(RTSP)的基本概念、组成部分及其与RTCP的交互过程,详细解析了客户端请求格式、服务器响应格式、常用方法分类及协议流程,并提供了SDP格式的深入解析。 ... [详细]
  • 本文探讨了如何通过优化SOAP服务调用和多线程处理来减少生成的事件数量,并提高加载大量实体的效率。 ... [详细]
  • 文章目录python包-requests关于requests包安装和使用pythonrequests请求超时设置工作中遇到的常见问题整理访问https网站,报错cer ... [详细]
  • 驱动程序的基本结构1、Windows驱动程序中重要的数据结构1.1、驱动对象(DRIVER_OBJECT)每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱 ... [详细]
  • 一关于t1表和testtb的索引设计二把主键放到二级索引的后面,会否占据更多的物理空间?三InnoDB的主键该如何选择,业务ID和自增 ... [详细]
  • 在运行于MS SQL Server 2005的.NET 2.0 Web应用中,我偶尔会遇到令人头疼的SQL死锁问题。过去,我们主要通过调整查询来解决这些问题,但这既耗时又不可靠。我希望能找到一种确定性的查询模式,确保从设计上彻底避免SQL死锁。 ... [详细]
author-avatar
妹纸叫BLACK
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有