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%';

 

posted @   diligently  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示