- Metadata 结构变化
- 5.7 版本问题
- 两套数据字典信息(Server层 oldguo.frm,InnoDB 数据字典)
- DDL无原子化
- frm和innodb层会出现不一致
- 并发处理需要小心处理(MDL,dict_sys::mutex,dict_sys::rw_lock)
- 崩溃无法恢复
drop table a,c ;
- 8.0 变化
- 支持事务性DDL,崩溃可以回滚,保证一致。
drop table a,c;
- 保留一份数据字典信息,取消frm数据字典。
- 数据字典存放至InnoDB表中
- 采用套锁机制,管理数据字典的并发访问(MDL)2.2 实例结构(boss+M+W+offiffiffice,
mysqld+MasterT+WORKT+MEM)
2.2.1MySQL 的内存结构
- 全新的Plugin支持
- 8.0.17+ 加入Clone Plugin,更好的支持MGR,InnoDB Cluster的节点管理
- 安全加密方式改变
- 改变加密方式为caching_sha2_password
- SSL 将支持到 TLSv1.3 版本。
- 用户管理及认证方式改变
- 改变授权管理方式
create user oldguo@’10.0.0.%’ identified by .,..
- 加入role角色管理
- 添加更多权限
- 原子性DDL
- 支持原子性DDL
- Cache && Buffer的变化
- 取消Query Cache
面试题: 请你说明8.0的新特性
2.实例结构(boss+M+W+offiffiffice,
mysqld+MasterT+WORKT+MEM)
2.1MySQL 的内存结构

实例: mysqld + Master Thread + Worker Threads + MEM
2.3 MySQL SQL语句处理逻辑及源码结构 *
SQL语句执行流程:
连接层: 提供连接协议、验证、提供专用连接线程
SQL层 : 解析预处理、优化(逻辑、物理)、执行
物理优化时,会参考统计信息? 优化器算法?
存储引擎层: 负责和磁盘交互
一条SQL 语句,昨天运行好好的(0.01秒),突然变慢了(2Min)?为什么?
统计信息不准确造成,不走索引造成的。
统计信息是什么?
统计信息记录的是,表的状态信息,比如表名、数据行、数据分布、索引状态信息。。。
统计信息是MySQL定期收集而来的,同过一些参数指标控制。不是实时收集的。
mysql.innodb_index_stats
mysql.innodb_table_stats
mysql> analyze table world.city;
mysql> optimize table world.city;
我看我们公司的数据库这个参数都是打开的innodb_numa_interleave
= ON
BIOS ——》 OS kernel ——> db
Qcache_hits、Qcache_not_cached这个值正常么
MySQL的查询缓存并非缓存执行计划,而是查询及其结果集,这就意味着只有相同的查询操作才能命中缓存,
因此MySQL的查询缓存命中率很低
select from t1 where id=1; ——> hash : 结果
select from t1 where id= and name =’zs’; —-》 hash XXXX
8.0 默认取消了QC
