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