读写锁
来源:互联网 发布:oracle数据培训 编辑:程序博客网 时间:2024/06/06 09:58
myisam:
读锁:所有会话能进行读,不能进行 insert, update, delete ,别的会话等待。
当前会话 unlock table 的时候,别的会话可以进行 insert,update,delete 。
写锁:
只有当前会话可以进行 insert, update, delete, select .别的会话等待
读锁获取需要对别名也进行读锁获取
lock table actor as a read, actor as b read;
innodb:
select ... in share mode
两个会话都对一条记录进行 select xxx from actor where actor_id = 178 lock in share mode,此时只有一个会话可以对此条记录进行 修改,其他的会话修改会报错并退出共享锁模式,第一个修改记录的会话获得锁,并更新
select ... for update
只有一个会话可以进行 for update 共享锁的获得,其他会话想要获得得先等待,当第一个会话 更新后释放该 update 锁,其他会话获得该 update 锁
innodb
1)只有通过索引条件检索数据,innodb 才使用行级锁,否则, innodb 将使用表锁
2)由于 mysql 的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但是如果是使用相同的索引键,是会出现锁冲突的。也就是同一个索引不能针对多条记录
3)当表有多个索引的时候,不同的事务可以使用不同的索引锁定不同的行,另外,不论是使用主键索引,唯一索引或普通索引,innodb 都会使用行锁对数据加锁
4)即便在条件中使用了索引字段,但是否使用索引来检索数据是由 mysql 通过判断不同执行计划的代价来决定的,如果 mysql 认为全表扫描效率更高,比如对一些很小的表,他就不会使用索引,这种情况下 innodb 将使用表锁,而不是行锁。
0 0
- 读写锁
- 读写锁
- 读写锁
- 读写锁
- 读写锁
- 读写锁
- 读写锁
- 读写锁
- 读写锁
- 读写锁
- 读写锁
- 读写锁
- 读写锁
- 读写锁
- 读写锁
- 读写锁
- 读写锁
- 读写锁
- Spark源码解读(1)——Master启动过程
- 机器学习中常用的导数公式和迹公式
- request.getQueryString
- The resource could not be loaded because the App Transport Security policy requir
- java实现猜拳游戏
- 读写锁
- 树莓派apt方式安装opencv
- Hdu1240 Asteroids!(三维BFS)
- 加载网络图片-radiobutton、imageview
- 开源中国源码解析之检测更新
- ACM训练目标
- java实现微博后台登录后台发送微博
- 工作第一天
- Spring基于ThreadLocal的“资源-事务”线程绑定设计的缘起