myqltransactionRollbackexception deadlock found when trying to get lock

linux 下远程连接mysq

命令:

mysql -h "1.0.0.1" -u username -p

1 获 取锁等待情况

可以通过检查 table_locks_waited和table_locks_immediate状态变量来分析系统上的表锁定争夺:

mysql> show status like ‘Table%‘;

+----------------------------+----------+

| Variable_name | Value |

+----------------------------+----------+

| Table_locks_immediate | 105 |

| Table_locks_waited | 3 |

+----------------------------+----------+

2 rows in set (0.00 sec)

可以通过检查 Innodb_row_lock状态变量来分析系统上的行锁的争夺情况:

mysql> show status like ‘innodb_row_lock%‘;

+----------------------------------------+----------+

| Variable_name | Value |

+----------------------------------------+----------+

| Innodb_row_lock_current_waits | 0 |

| Innodb_row_lock_time | 2001 |

| Innodb_row_lock_time_avg | 667 |

| Innodb_row_lock_time_max | 845 |

| Innodb_row_lock_waits | 3 |

+----------------------------------------+----------+

5 rows in set (0.00 sec)

另外,针对Innodb类型的表,如果 需要察看当前的锁等待情况,可以设置InnoDB Monitors,然后通过Show innodb status察看,设置的方式是:

CREATE TABLE innodb_monitor(a INT) ENGINE=INNODB;

监视器可以通过发出下列语句来被停止:

DROP TABLE innodb_monitor;

设置监视器后,在show innodb status的显示内容中,会有详细的当前锁等待的信息,包括表名、锁类型、锁定记录的情况等等,便于进行进一步的分析和问题的确定。打开监视器以后,默 认情况下每15秒会向日志中记录监控的内容,如果长时间打开会导致.err文件变得非常的巨大,所以我们在确认问题原因之后,要记得删除监控表以关闭监视 器。或者通过使用--console选项来启动服务器以关闭写日志文件。

如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。 
show processlist;只 列出前100条,如果想全列出请使用show full processlist; 
mysql> show processlist;(非常管用哦)

来自:http://5iwww.blog.51cto.com/856039/340985

时间: 2024-11-10 19:25:27

myqltransactionRollbackexception deadlock found when trying to get lock的相关文章

Deadlock found when trying to get lock; try restarting transaction

1.错误描述 [ERROR:]2015-06-09 16:56:19,481 [抄送失败] org.hibernate.exception.LockAcquisitionException: error executing work at org.hibernate.dialect.MySQLDialect$1.convert(MySQLDialect.java:451) at org.hibernate.exception.internal.StandardSQLExceptionConver

MySQL error : Deadlock found when trying to get lock; try restarting transaction

在使用 MySQL 时,我们有时会遇到这样的报错:"Deadlock found when trying to get lock; try restarting transaction". 在 14.5.5.3 How to Minimize and Handle Deadlocks 中有这样一句话: Deadlocks are not dangerous. Just try again. 死锁不危险,重试一下就行. 实际上这个建议非常实用. 我们回顾一下死锁发生的四个条件: 资源的独

Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction

我在update数据库的时候出现的死锁 数据库表死锁 这是在网上看到的文章:: 由于InnoDB预设是Row-Level Lock,所以只有「明确」的指定主键,MySQL才会执行Row lock (只锁住被选取的资料例) ,否则MySQL将会执行Table Lock (将整个资料表单给锁住). 举个例子: 假设有个表单products ,里面有id跟name二个栏位,id是主键. 例1: (明确指定主键,并且有此笔资料,row lock) SELECT * FROM products WHERE

MySQL5.6.12 Waiting for commit lock导致从库hang住的问题剖析

nagios报警,线上一台从库检测不到slave状态,于是远程上去查看问题: 1,show slave status\G卡住: Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show slave status\G show slave status卡住了,动弹不了,这种情况还是第一次遇到. 2,看w负载无压力: [root@tmp3_72 ~]# w 13:23:31 u

innodb next-key lock引发的死锁

innodb的事务隔离级别是可重复读级别且innodb_locks_unsafe_for_binlog禁用,也就是说允许next-key lock CREATE TABLE `LockTest` (   `order_id` varchar(20) NOT NULL,   `id` bigint(20) NOT NULL AUTO_INCREMENT,   PRIMARY KEY (`id`),   KEY `idx_order_id` (`order_id`) ) ENGINE=InnoDB 

MySQL deadlock

http://dev.mysql.com/doc/refman/5.6/en/glossary.html#glos_deadlock Deadlock A situation where different transactions are unable to proceed, because each holds a lock that the other needs. Because both transactions are waiting for a resource to become

innodb next-key lock

gap lock的内部加锁原理 gap lock的前置条件: 1 事务隔离级别为REPEATABLE-READ,innodb_locks_unsafe_for_binlog参数为0,且sql走的索引为非唯一索引 2 事务隔离级别为REPEATABLE-READ,innodb_locks_unsafe_for_binlog参数为0,且sql是一个范围的当前读操作,这时即使不是非唯一索引也会加gap lock Record lock 单条索引记录上加锁,record lock锁住的永远是索引,而非记

mysql之show engine innodb status解读(转)

add by zhj: 我第一次知道这个命令是线上服务出了问题,然后同事用这个命令去查看死锁.但用这个命令看死锁有一定的局限性,它只能看到最后一次死锁, 而且只能看到死锁环中的两个事务所执行的最后一条语句(即被死锁卡住的那条语句),看不到整个死锁环,也看到不整个事务的语句.但是即使这亲,对我 们来说也非常有用,因为一般来说,数据库同时存在多个死锁环的可能性比较小,而且有了死锁环中的事务的最后一条语句,我们找到整个死锁环不是太难. "show engine innodb status"这

MYSQL ERROR

mysql出错了以前往往靠猜.有了这张表一查就出来了.方便不少.特共享于众 1005创建表失败 1006创建数据库失败 1007数据库已存在创建数据库失败 1008数据库不存在删除数据库失败 1009不能删除数据库文件导致删除数据库失败 1010不能删除数据目录导致删除数据库失败 1011删除数据库文件失败 1012不能读取系统表中的记录 1020记录已被其他用户修改 1021硬盘剩余空间不足请加大硬盘可用空间 1022关键字重复更改记录失败 1023关闭时发生错误 1024读文件错误 1025