【高性能MySQL】 MySQL逻辑架构

高性能MySQL-第一章-MySQL架构与历史

1.1 MySQL逻辑架构

在这里插入图片描述
第一层: 网关层(个人理解), 主要是对一些连接校验, 授权认证等等.
第二层: 核心层,MySQL一些核心操作都在这一层中-内置函数,存储过程,触发器.
第三层: 存储引擎层-InnoDB,MyISAM等

1.2 并发控制

  1. 读写锁
    读锁(共享锁): 读锁 不阻塞 其他线程.
    写锁(排他锁): 写锁 阻塞 其他线程
  2. 锁粒度
    表锁: 锁定整张表
    行锁: 锁定表中某一行, 在存储引擎实现

1.3 事务

典型案例: 转账操作
ACID特性: 原子性、一致性、持久性、隔离性

1.3.1 隔离级别:

未提交读: 该级别事务,即使未提交,其他事务也可以读到其未提交的数据,也叫做“脏读”,因此不建议使用改级别。
读已提交: 是大多数数据库默认级别(但MySQL不是),一个事务开始时,只能读取 已经提交的事务做的修

MySQL为repeatable。
原因:在 5.0之前只有statement一种格式,而主从复制存在了大量的不一致,故选用repeatable。
参考:
https://www.cnblogs.com/shoshana-kong/p/10516404.html
改。

可重复读: 可重复读解决了“脏读” 问题,保证同一个事务多次读取结果是一致的。但是存在幻读问题:
串行化: 串行化为读取的每一行数据都加锁,可能导致大量的超时和锁竞争。

幻读:某个事务正在读取某个范围的记录时,另外一个事务又在该范围内插入了新的记录,当之前的事务再次读取该范围的记录时,会产生“幻行”。

1.3.2
死锁: 两个或多个事务互相等待资源释放
解决方案: 死锁检测、死锁超时
比如InnoDB存储引擎,检测到死锁的循环依赖, 就立即返回一个错误。
InnoDB目前处理死锁的方法是: 将持有最少行级排他锁的事务进行回滚。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值