1 第一层:连接处理、授权认证、安全
2 第二层:内置函数、解析、优化、跨存储引擎的功能:存储过程、触发器、视图
3 第三层:数据在存储和提取,底层函数(如开始事务)不解析sql、存储引擎之间不相互通信,只响应上层
客户端连接到服务器-需要认证:用户、原始主机、密码-然后验证特定操作权限
优化器:会请求存储引擎提供容量或某个具体操作的开销信息以及表数据的统计信息,在解析查询之前服务器会先检查查询缓存query cache,如果能找到,服务器就不必再执行查询解析、优化和执行 的整个过程,直接返回查询缓存中的结果集
并发控制:多个查询需要同一时间修改数据
使用锁防止数据损坏,但不支持并发处理
锁有:共享锁、排他销 也叫 读锁 、写锁
读锁是共享的,相互不阻塞
写锁是排他的,会阻塞其他的写锁和读锁
锁策略:在锁的开销和数据的安全性之间寻求平衡。每种mysql存储引擎都可以实现自己的锁策略和锁粒度。
表锁:table lock ,mysql中最基本的锁策略,且开销最小的锁策略
写操作前需要先获得写锁,这会阻塞其他用户对该表的所有读写操作
读锁之间是不相互阻塞的
写锁比读锁有更高的优先级
尽管存储引擎可以管理自己的锁,mysql本身还是会使用各种有效的表锁来实现 不同的目的。例如:服务器会为alter table之类的操作语句使用表锁
行级锁:可以最大程序的地支持并发处理,同时也带来了最大的锁开销
innoDB/XtraDB实现了行级锁。只在存储引擎层实现,而mysql服务器层没有实现
事务:独立的工作单元,事务内的语句,要么全部执行成功,要么全部执行失败。strat transaction 开始事务 commit提示事务,rollback回滚事务
属性:ACID 原子性、一致性、隔离性、持久性