mysql之innodb锁的应用

版权声明:转载需说明出处,欢迎交流!!! https://blog.csdn.net/qq_40408317/article/details/81436878

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

猜你喜欢

转载自blog.csdn.net/qq_40408317/article/details/81436878