MySQL-----锁(行锁、表锁、页锁、乐观锁、悲观锁)

回顾:

ACID:DBMS在写入或更新资料的过程中,为保证事务正确可靠,具有的四个特性:原子性(不可分割性)、一致性、隔离性(独立性)、持久性

一个事务:一系列数据库操作组成的一个完整的逻辑过程

原子性:一个事务中的所有操作,要么全部完成、要么全部不完成,若发生错误,回滚(RollBack)

一致性:事务开始之前和事务结束之后,数据库的完整性没有破坏

隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别:读未提交、读提交、可重复读、串行化

持久性:事务处理结束后,对数据的修改时永久性的,系统出故障也不会改变

:协调多个进程或线程并发访问某一资源的一种机制.锁冲突是影响数据库并发访问性能的重要因素。

存储引擎支持不同的锁机制

 行锁表锁页锁
MyISAM 支持 
BDB 支持支持
InnoDB支持支持 

 

 

 

 

开销、加锁速度、死锁、粒度、并发性能

  • 行锁:开销大,加锁慢,会出现死锁;锁定粒度小,锁冲突概率小,并发度高
  • 表锁:开销小,加锁快,不会出现死锁;锁定粒度大,发生锁冲突概率高,并发度最低
  • 页锁:开销和加锁速度介于行锁和表锁之间,会出现死锁;锁粒度介于表锁和行锁之间,并发度一般

###根据具体应用决定适合那种锁,仅从锁的角度:表锁适合以查询为主;表锁适合按大量索引条件并发更新少量不同数据,同时又有并发查询的应用

MyISAM表锁

MyISAM只支持表锁,随着应用对事务的完整性和并发性要求提高,MySQL才开始开发基于事务的存储引擎,而来出来InnoDB的行锁和BDB的页锁,InnoDB被Oracle收购

先记录到此,后续更新

转载于:https://www.cnblogs.com/dangjinhu/p/9495345.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值