1.Mysql的逻辑架构
第一层是基于网络客户端的连接处理工具架构,并非Mysql独有,第二层是Mysql的核心部分,大多数核心功能都在这一层,包括查询、解析、分析、优化等,存储过程、触发器和视图都在这一层实现
第三层包含了存储引擎,除了InnoDB外,存储引擎不会去解析SQL。
2.优化与执行
MySQL会解析查询,并创建内部数据结构(解析树),然后对其进行各种优化,包括重写查询、决定表的读取顺序,以及选择合适的索引等。用户可以通过特殊的关键字提示(hint)优化器,影响它的决策过程。也可以请求优化器解释(explain)优化过程的各个因素,使用户可以知道服务器是如何进行优化决策的,并提供一个参考基准,便于用户重构查询和schema、修改相关配置,使应用尽可能高效运行。且优化器不会关心下层的存储引擎是什么,但是存储引擎会影响优化查询的性能。对于SELECT语句,解析查询前Mysql会首先检查查询缓存,在里面找到则不必执行查询解析、优化和执行的过程
3.读写锁(共享锁和排他锁)
读锁即共享,同一时间有多个进程、线程可以获取这个锁,但是写锁即排他,仅有一个进程、线程能够执行写入。大多数时候,Mysql锁的内部管理是透明的。
4.粒度锁(表级锁、行级锁)
表锁会锁定整张表,一个用户在对表进行写操作时,需要先获得写锁,且写锁会优先抢占而读锁不能。
行锁只在存储引擎层实现,而MYSQL服务器层没有实现。
5.事务
一个事务的所有操作,要么同时成功要么同时失败。其具有原子性、一致性、隔离性和持久性。
6.隔离级别
RU:未提交读,即事务中的修改即使没有提交对其他事务也是可见的,会导致脏读、幻读、不可重复读
RC:提交读,一个事务提交了的修改对其他事务才是可见的,但是会导致不可重复读
RR:可重复读
S:串行化