MySql锁理论学习

  1. 锁的种类
  • 读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会相互影响。
  • 写锁(排他锁):当前写操作没有完成前,会阻止其它写锁和读锁。
  1. 选锁的因素:加锁速度,开销,粒度,并发性能,死锁。
  2. 表锁(偏向MyISAM引擎,开销小,加锁快,无死锁,锁定粒度大,锁冲突概率高,并发低)
  • 对表加读锁:设想一个情况,两个会话1和2,一张table表。会话一对table表加读锁,此时:会话1和会话2都可读这张表;;会话1不可读除table外的其他表;会话1和会话2都不可改这张表,但会话1将表锁释放后,等待中的会话2会执行更改操作。
  • 对表加写锁:情况同上,但会话1对table加了写锁。此时:会话1可以读+写此表;会话1不可读除table外的其他表;会话2不可读+不可写此表,除非会话1释放锁。
  1. 命令

    • show open tables 展示加锁的表
    • show status like "table%"展示加锁的情况,包括被加了几次锁和线程堵塞了几次。
  2. 行锁(偏向InnoDB引擎,开销大,加锁慢,会出现死锁。锁定粒度小,锁冲突概率低,并发高)----关于事务,底下会有详细介绍

  • InnoDB 和MyISAM最大区别就是:InnoDB支持事务;采用了行级锁。
  1. 事务:一组SQL语句组成的逻辑处理单元
  • 四大特性:ACID原子性,一致性,隔离性,持久性
  • 并发处理事务带来的问题:a.更新丢失–两人同时更新同一文件,导致了覆盖;b.幻读—A读到了B提交的新数据,不符合隔离性;c.脏读—读取了已修改但尚未提交的数据;d.不可重复读----A读到了B已提交修改的数据,违反了隔离性。
  • 事务隔离级别:由低到高为未提交读,已提交读,可重复读,可序列化。通过show variables liek "tx_isolation"可知当前数据库隔离级别,默认为可重复读。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

匿名王同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值