mysql之innodb锁的应用

本文详细介绍了MySQL中InnoDB引擎的行锁机制及其如何影响数据操作,探讨了死锁产生的原因及解决办法,并提供了优化建议。

--> mysql行锁  表的搜索引擎为innodb,支持事务,采用的是行锁。

--->

首先将mysql 的自动提交设置为0
set autocommit = 0; 

写输入完成sql之后需要执行的命令是 commit;命令来执行事务的提交。

-->-- 死锁问题的产生

mysql存在死锁检查的机制、如果检查存在死锁的状态,mysql会自动的进行上一个的锁的解除操作。但会因此耗费mysql 的性能。

--> 死锁问题的产生


当用户一对表中的第一行加上for update的语句,
用户二对表中的第二行有for update的操作
然后用户一对第二行中的数据进行update的操作。
用户二对第二行的数据进行修改的时候则会产生死锁。

在执行完成之后要执行commit的操作,才能完成对文件的修改的操作。

在更新的时候如果该字段没有存在index的情况下  则由行锁自动的更新为表锁。
show index form TableName ;
用来查看mysql的表中的索引的字段的
在使用的时候尽量的使用主键id来进行查找的操作
避免使用的时候产生 主键不存在的情况下 行锁升级为表锁

-- 》 保证筛选条件的字段是存在索引的

--> 间隙锁

加锁的时候尽量避免添加范围锁,这样可以避免产生别的用户无法对数据进行修改的问题。

-->END

-->锁的建议优化

-->查看当前系统中存在的锁的状态
show status like 'innodb_row_lock%';

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Diligently_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值