mysql体系结构
mysql分为mysqlServer层和存储引擎层
Server层
连接层
- 通讯协议
- 主要用来检测客户端版本是否兼容服务端
- 线程处理
- 一个连接请求都会对应一个线程
- 用户密码验证
- 验证用户账号和密码连接mysql服务器
sql层
- 权限判断
- 判断用户是否有权访问某个库某个表
- 查询缓存
- 解析器
- 对sql进行解析,判断语法是否正确
- 预处理
- 对上面解析不了的进行预处理操作
- 查询优化器
- 对查询语句进行优化
- 执行计划
存储引擎层
InnoDB体系结构
InnoDB存储结构
表空间
系统表空间存储(ibdata1)
存储结构的所有数据信息和回滚信息自动扩展大小 64M 默认大小是10m 查看自动扩展大小
show variables like '%auto%';
查看默认大小
show variables like '%innodb_data%'
独立表空间
- 每个表都有自己的表空间文件 效率性能更高。
段
组成表空间,一个表可一个理解为一个段,一个表有四个段,是索引个数的2倍
区
组成段,由连续页组成,大小固定为 1m
页
最小存储单位 默认 16k
InnoDB内存结构
查看内存参数分配
show variables like '%buffer%';
系统全局区
innodb_buffer_pool
- 缓存innodb表的数据,索引等信息
innodb_log_buffer
- 事务的缓存
key_ buffer_size
- 只用于MyISAM
程序缓存区
join_buffer_size
- 表连接
read_buffer_size
- 表顺序扫描的缓存
InnoDB特性
1插入缓冲
提高普通索引的插入性能
2两次写
保证写入的安全
3自适应哈希索引