MySQL经典体系结构
MySQL连接:
MySQL Protocol(MySQL协议)
Socket (Unix Scoket)本地连接
比如:mysql -uroot -p123 -S /tmp/mysql.sock
TCP/IP(远程连接)
比如:mysql -uroot -p123 -h 10.0.0.51 -P3306
API (应用程序、开发)
Native API
C、PHP、JDBC、ODBC、.NET、Python、Go...
MySQL8.0 对比 5.7 一些功能差别:
- 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)
- 全新的Plugin支持
- 8.0.17+ 加入Clone Plugin,更好的支持MGR,InnoDB Cluster的节点管理
- 安全加密方式改变
- 改变加密方式为caching_sha2_password
- SSL 将支持到 TLSv1.3 版本。
- 用户管理及认证方式改变
- 改变授权管理方式
- 加入role角色管理
- 添加更多权限
- 原子性DDL
- 支持原子性DDL
- Cache && Buffer的变化
- 取消Query Cache
MySQL 的内存结构
MySQL 中的线程
实例: mysqld + Master Thread + Worker Threads + 内存结构