1、MySQL逻辑架构
1.1、连接管理与安全性
1.2、优化与执行
select 语句 在MySQL Server中的执行流程:
MySQL Server 会先检查缓存,如果找到,直接返回;
没找到--->MySQL Server解析器 解析select语句--->优化器 请求 存储引擎 提供容量或某个具体操作的开销信息、表数据的统计信息等,根据统计信息进行优化;
(优化器 不关心 表使用哪个存储引擎,但存储引擎 影响 优化器的优化)
2、并发控制
2.1、并发读(读锁)、并发写(写锁)
2.2、锁粒度
并发资源 的粒度越小越好;
2.3、MySQL提供的锁策略:
表锁:
MySQL中最基本的锁,并发写时,会锁住整张表,开销最小;
行级锁:
某些存储引擎实现了行级锁,可以最大程度支持并发,但也带来了最大的开销;
3、事务
3.1、隔离级别
每种存储引擎 实现的隔离级别不尽相同;
Read Uncommitted(读未提交):
写事务 修改的数据 未提交时,对其他事务可见;
读取到 写事务未提交的数据,造成脏读;
Read Committed(读提交):
只能 读取 已提交事务的数据,未提交的写事务数据 对其他事务不可见;
执行2次查询,会出现不一样 的结果,造成幻读;
Repeatable Read(可重复读):
MySQL默认的隔离级别;
同一个事务中多次读取同样记录的结果是一致的;
Serializable(可串行化):
解决了幻读;
在读的每一行数据上加锁;