MySQL之体系结构原理

全部文章分为上半场和下半场,上半场内容如下:

  1. MySQL 5.7 安装部署(二进制)*****
  2. MySQL5.7 体系结构原理 *****
  3. MySQL基础管理  *****
  4. 基础SQL语句使用 *****
  5. SQL高级应用  ***

 

 

1.1 连接MySQL的方式

 

TCP/IP方式(远程/本地)

mysql -uroot -p12345 -h 10.10.1.151 -P3306

 

Socket方式(仅限本地)

mysql -uroot -p123456 -s /tmp/mysql.sock

 

1.2 实例介绍

 

实例=mysqld后台守护进程+Master Thread + 干活的Thread + 预分配的内存

类似:

公司=老板 + 经理 + 员工 + 办公室

 

1.3 mysqld程序运行原理

 

1.3.1 mysqld程序结构

 

MySQL之体系结构原理_第1张图片

1.3.2 一条SQL语句的执行过程

1.3.2.1 连接层
(1)提供连接协议:TCP/IP 、SOCKET
(2)提供验证:用户、密码,IP,SOCKET
(3)提供专用连接线程:接收用户SQL,返回结果
通过以下语句可以查看到连接线程基本情况
mysql> show processlist;

1.3.2.2 SQL层(重点*)

(1)接收上层传送的SQL语句

(2)语法验证模块:验证语句语法,是否满足SQL_MODE

(3)语义检查:判断SQL语句的类型

        DDL:数据定义语言

        DCL:数据控制语言

        DML: 数据操作语言

        DQL: 数据查询语言

(4) 权限检查: 用户对库表有没有权限

(5)解析器:对语句执行前,进行预处理,生成解析树(执行计划),说白了就是生成多种执行方案.
(6)优化器:根据解析器得出的多种执行计划,进行判断,选择最优的执行计划
        代价模型:资源(CPU IO MEM)的耗损评估性能好坏
(7)执行器:根据最优执行计划,执行SQL语句,产生执行结果
执行结果:在磁盘的xxxx位置上
(8)提供查询缓存(默认是没开启的),会使用redis tair替代查询缓存功能
(9)提供日志记录(日志管理章节):binlog,默认是没开启的。

 

 

1.3.2.3 存储引擎层(类似于Linux中的文件系统)

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

 

1.4 数据库的逻辑结构

 

 

MySQL之体系结构原理_第2张图片

1.4.1 库

库名, 库属性

 

1.4.2 表

表名

属性

列:列名(字段),列属性(数据类型,约束等)

数据行(记录)

 

1.5 物理存储结构了解

 

1.5.1 库是由目录存放的;

mysql> create database yang;
Query OK, 1 row affected (0.03 sec)

MySQL之体系结构原理_第3张图片

 

创建库就相当于在data目录下创建了一个目录。

反过来,在data目录下创建一个目录,就是相当于创建了一个库。

[root@public data]# mkdir xin

MySQL之体系结构原理_第4张图片

 

1.5.2  表是由多个文件存放的

表在不同的存储引擎中存放的文件也不同。

MyISAM(一种引擎)的表:

-rw-r-----. 1 mysql mysql   10816 9月   5 17:55 user.frm #列
-rw-r-----. 1 mysql mysql     340 9月   5 17:55 user.MYD #记录
-rw-r-----. 1 mysql mysql    4096 9月   5 17:55 user.MYI #索引

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

-rw-r-----. 1 mysql mysql    8636 9月   5 17:55 time_zone.frm  #存储列相关信息
-rw-r-----. 1 mysql mysql   98304 9月   5 17:55 time_zone.ibd #数据行+索引

 

1.5.3 表的物理结构

每个扇区: 512B

mkfs 将连续的扇区做成block 4KB = 8个扇区。并做成连续的block。

格式化就是做成连续的block。

inode : 是block索引

 

page 页 相当于 block。

每个page页 16KB。

连续的16KB的页 称为区。一个区最少一个page。

一个表就是一个段,一个段包含一个或多个区。

 

Innodb 引擎   ---  类似文件系统

相当于mkfs

ibd - 表空间,表段。

MySQL之体系结构原理_第5张图片

 

 

 

你可能感兴趣的:(MySQL)