初识MySQL
服务器处理客户端请求
1. 服务器会维护线程池,为每个客户端连接分配一个线程,线程数可以动态配置
2. 解析优化
- 查询缓存。从MySQL 5.7.20开始,不推荐使用查询缓存,并在MySQL 8.0中删除
- 查询优化。对SQL语句做一些优化,如外连接转换为内连接、表达式简化、子查询转为连接;可以使用EXPLAIN语句来查看某个语句的执行计划
3. 存储引擎
最常用的就是InnoDB和MyISAM
字符集
1. utf8字符集表示一个字符需要使用1~4个字节,
mysql中使用的utf8是阉割过的utf8mb3,使用1~3个字节表示字符
2. 字符集的设置会影响char,varchar占用空间大小。因为char(10)指的是字符长度为10,而不是10字节
InnoDB记录存储结构
页
页是磁盘和内存之间交互的基本单位,页的大小一般为 16 KB
一次最少从磁盘中读取16KB的内容到内存中,一次最少把内存中的16KB内容刷新到磁盘中
行格式
- Compact
默认格式
为什么变长字段和null要逆序?