写点什么

MYSQL 的行锁是如何工作的

用户头像
卢卡多多
关注
发布于: 6 小时前
MYSQL的行锁是如何工作的

上文是针对于 MySQL 的锁分类


其实主要的是针对于单条数据的记录的行锁 或者表锁;

表级锁模式:

  • 表共享锁

  • 独占写锁


线程获取表的读锁之后,其他线程仍然对表可以读操作,但是不能对表进行操作,


MySQL 命令添加表锁

  1. 添加表级锁,读锁或者写锁


 lock table  表名称  read(write);

lock table data read ;添加读锁表级别的 lock table data write ;添加写锁表级别的 删除 表锁命令 unlock tables;
复制代码

MySQL 的行锁

行锁是针对于特点的数据记录,


对于当前 MySQL 的主流存储引擎,innoDB 中,有两种类型的行锁,


  • 共享锁

  • 排他锁


其中 共享锁--->一个事务只能读取一行数据, 并且添加了共享锁之后的数据,就不能给增加排他锁;


排他锁--->对于当前事务,中的数据进行数据的 CRUD 的操作,并且当前的数据行,不能增加排他锁和共享锁


其中比较重要的是,对于主要的数据表中的索引字段,如果对非索引字段进行设置行锁,可能会将行锁编成表锁。


可以使用


lock in share mode 命令--->共享锁


select * from data where id =1 for update


区分行锁和表锁的关键,是看当前的锁,是针对对全部的数据表的,还是只是当前更新数据的记录的,


比如 当前我要下单一个商品,只是在当前记录表的数据增加或者修改,


这个就是行级数据,进行操作


如果是我对这个表操作, 比如高并发的环境下,对其当前表增加一个数据,但是 支持的并发比较低,相应的数据安全的性能也比较低,


牺牲性能来保证数据安全

发布于: 6 小时前阅读数: 6
用户头像

卢卡多多

关注

努力寻找生活答案的旅途者 2020.04.12 加入

公众号:卢卡多多,欢迎一起交流学习

评论

发布
暂无评论
MYSQL的行锁是如何工作的