MySQL 体系结构

体系结构

1. c/s(客户端/服务端)模型介绍

1.1 MySQL的连接方式

tcp/ip方式 (远程,本地) :
mysql -uroot -p123 -h 10.0.0.51 - P3306
socket 方式(仅本地) :
mysql -uroot -p123 -S /tmp/mysql.sock

1.2 实例介绍

实例=mysqld后台守护进程 + master thread + 副进程 + 预分配的内存

2. MySQL程序运行原理

2.1 MySQL程序结构

image.png

2.1.1 连接层

(1) 提供连接协议: tcp/ip , socket
(2) 提供验证:  用户, 密码, IP, socket
(3) 提供专用线程链接: 接收用户sql ,返回结果
 注: show processlist; 查看线路连接基本情况

2.1.2 SQL 层

1) 接收上层传输的SQL语句
2) 语法验证模块: 验证语句 语法
3) 语义检查: 判断语句的类型
      DDL: 数据定义语言
      DCL: 数据控制语言
      DML: 数据操作语言
      DQL: 数据查询语言
4) 权限检查: 用户对库,表有没有权限
5) 解析器: 进行SQL的预处理, 产生执行计划 (也就是给出如何查找数据的方案)
6) 优化器: 根据解析器给出的多种执行计划,进行代价判断,选择最优的执行计划;
      代价模块: 是根据资源(CPU IO MEM)的损耗评估性能好坏
7) 执行器: 根据最优执行计划, 执行SQL语句,产生执行结果
       执行结果: 数据在磁盘的哪个位置
8) 提供查询缓存 (默认没有开启):  通常会使用redis tair 替换查询缓存功能
9) 提供日志记录(默认没有开启): binlog, 

2.1.3 储存引擎层

负责根据SQL层执行的结果,从磁盘上拿数据.
将16进制的磁盘数据,交由SQL架构画成表,
在由连接层的专线程返回给用户.

3. 数据库的逻辑结构

3.1 库

库就像Linux里的目录一样,用库名和属性两部分组成,库下面是表

3.2 表

表就像Linux的文件 ,由表名和属性两部分;但表里是由列和行组成
      列: 列名(字段), 列属性(数据类型,约束等)
      行: 数据行(记录)

4. 数据库的物理结构

4.1 MyISAM (引擎) 的表:

-rw-r----- 1 mysql mysql   10816 Apr 18 11:37 user.frm      (储存列的相关信息)
-rw-r----- 1 mysql mysql     396 Apr 18 12:20  user.MYD      (储存数据行)
-rw-r----- 1 mysql mysql    4096 Apr 18 14:48 user.MYI      (储存索引信息)

4.2 InnoDB(默认的存储引擎)的表:

-rw-r----- 1 mysql mysql    8636 Apr 18 11:37 time_zone.frm      (存储列相关信息)
-rw-r----- 1 mysql mysql   98304 Apr 18 11:37 time_zone.ibd      (储存数据行和索引)

你可能感兴趣的:(MySQL 体系结构)