一、MySQL体系结构
1.1、mysql C/S模型
主要有两种连接mysql的方式:
- 1)TCP/IP
- 2)Socket
mysql -uroot -pmysql -h 10.0.0.51 #TCP/IP mysql -uroot -pmysql -S /tmp/mysql.sock #socket
1.2、mysql实例概念
分布式系统架构中会使用多实例:在一个系统上要起多个mysql。
mysqld守护进程 Master thread worker thread 专用内存 ====>实例
实例 数据 ====>完整的数据库管理系统
多实例==完整的数据库管理系统*n
1.3、mysql工作过程
一条SQL语句的执行过程:select user,authentication_string,host from mysql.user;
1.3.1、连接层工作原理
(1) 提供连接协议 TCP/IP Socket (2) 提供用户验证模块,加载授权表(mysql.user) user password (3) 提供连接线程 负责:所有会话相关的命令接收及回馈
1.3.2、SQL层工作原理
#SQL语言种类 SQL :结构化的查询语言 DDL :数据定义语言 DCL :数据控制语言 DML :数据操作语言 DQL :数据查询语言 每一类语言,都有专门的模块来负责 #SQL层工作原理 (1) 验证语句语法(SQL 92, 99,移植性),SQL_MODE (2) 权限验证模块 (3) 语义验证模块 (4) 专用SQL解析器,SQL语句执行的方法(explain) (5) 优化器:选择一个代价最低的执行计划 代价:CPU MEM IO (6) 执行器:根据优化器的选择最优的执行计划,执行SQL语句,得出执行结果. (7) 提供查询缓存:query_cache ,现在一般用redis产品替代query_cache (8) 提供查询(变更类)日志:binlog
1.3.4、存储引擎层工作原理
多种存储引擎,以插件形式支持. 不同存储引擎就像,不同的文件系统一样,提供不同数据存取模式. InnoDB: 一张表就是一个文件, .ibd文件,一个段,区,数据页(16K) 存储引擎根据,SQL层提供的执行结果,结构化层表的形式,返回给用户
1.4、mysql逻辑结构
1.5、mysql物理结构
1)对于Linux操作系统来讲,他的物理层是同柱面的扇区.
2)对于MySQL来讲,他是Linux系统之上的应用软件,他的物理层就是文件系统上的特定格式的文件,由MySQL<存储引擎>决定的
对于myisam引擎来说:
- user.frm :表的列结构
- user.MYD :数据行记录
- user.MYI :表的索引
对于innodb引擎来说:(注意:mysql8.0中已经没有.frm文件了)
- t1.frm :表列的结构
- t1.ibd :数据行记录和索引