【MySQL学习笔记】01、mysql架构相关与并发控制

mysql逻辑架构图

 

  1. 在连接层,大部分使用连接池中少量线程队列的服务大量的连接
  2. mysql的核心部分在中间层,也是跨存储引擎的功能实现层
  3. 在存储引擎层,服务器通过API与存储引擎进行通信,这些接口屏蔽了不同存储引擎之间的差异(InnoDB除外,会在这一层解析foreign key定义)
  4. 并发控制:读锁和写锁,读锁之间不阻塞,但通常写锁比读锁优先级高,故写锁请求可能插入到读锁队列的前面
  5. 锁粒度:在确保数据正确的情况下,更精确的锁定而减少对性能的影响,在mysql中主要有:表锁和行级锁。表锁一次性锁定内容最多,在系统开销方面最小,行级锁在存储引擎层实现(并非服务层),可以最大程度并发处理
  6. 事务:系统需通过ACID测试:atomicity(原子性)、consistency(一致性)、isolation(隔离性)、durability(持久性)
  7. 隔离级别:分为四种:1、未提交读(READ UNCOMMITTED),当前事务中的修改,在提交之前,对其他事务也是可见,也就是脏读。2、提交读(READ COMMITTED)-----大部分系统的默认事务隔离级别,满足一定的隔离性,当前事务的修改在未提交之前对其他事务不可见。3、可重复读(REPEATABLE READ)-----mysql的默认事务隔离级别,解决脏读的问题,(mysql的存储引擎通过MVCC解决幻读的问题?)4、可串行化(SERIALIZABLE)加锁读,最高隔离级别,读取的每一行数据上都加锁,系统开销大,使用于高度确保数据一致性且无并发的情况
  8. 死锁:存储引擎可以检测到死锁的循环依赖,将持有最少行排他锁的事务进行回滚(破坏不可剥夺、请求与保持)
  9. 事务日志:在内存拷贝中修改表中数据,随后在后台将修改的部分慢慢刷回磁盘
  10. MVCC(多版本并发控制):通过版本号维持某一事务执行时刻系统的镜像,也就是说:不管执行多久,每个事务看到的数据是一致的(版本号相同 = 镜像相同),并且:事务开始的时间不同,每个事务对同一张表,同一时刻看到的数据可能不一样(事务执行时间不同 = 版本号可能不同(自增) = 镜像可能不同),以下两张图为MVCC查询和删除的检查方式:
MVCC查询
MVCC查询

 

MVCC删除
MVCC删除

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值