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;  
Last modification:August 14th, 2021 at 05:48 pm
如果觉得这篇技术文章对你有用,请随意赞赏