Mysql行锁属于悲观锁,悲观锁比较悲观,当多个线程对同一行数据实现修改的时候,最后只有一个线程才能修改成功,只要谁能够对获取该到行锁则其他线程时不能够对该数据做任何修改操作,且是阻塞状态。 比如for update
或者事务开启了事务但是没有提交事务。
注意:mysql
中的autocommit
为自动提交,释放行锁。
Value
的值为ON,表示autocommit
开启。OFF表示autocommit
关闭
set autocommit=0; --关闭
1、用 BEGIN
, ROLLBACK
, COMMIT
来实现BEGIN
开始一个事务ROLLBACK
事务回滚COMMIT
事务确认
2、直接用 SET 来改变 MySQL 的自动提交模式:
SET AUTOCOMMIT=0 禁止自动提交
SET AUTOCOMMIT=1 开启自动提交
查询行锁是否存在
select * from information_schema.innodb_trx t
查询行锁的ID
select t.trx_mysql_thread_id from information_schema.innodb_trx t
清理未提交的事务
kill 锁ID;