MySQL的体系结构

MySQL客户端/服务器工作模型(C/S)

在这里插入图片描述
1、TCP/IP方式(远程、本地):
mysql -uroot -ppwd -h 192.168.0.1 -P3306
2、Socket方式(仅本地):
mysql -uroot -ppwd -S /tmp/mysql.sock

服务器端实例

在这里插入图片描述
实例=mysqld后台守护进程+Master Thread +工作的Thread+预分配的内存结构

mysqld程序结构

在这里插入图片描述

Server层

connection层

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

SQL层

  1. 接收上层传送的SQL语句
  2. 语法验证模块:验证语句语法,是否满足SQL_MODE
  3. 语意检查:判断SQL语句的类型
    DDL :数据定义语言
    DCL :数据控制语言
    DML :数据操作语言
    DQL: 数据查询语言
  4. 权限检查:用户对库表有没有权限
  5. 解析器:对语句执行前,进行的解析预处理,生成解析树(执行计划),可以理解为一个沙盘,得出执行方案
  6. 优化器:根据解析器得出的多种执行计划,进行判断,选择最优的执行计划(基于cost代价模型)
    代价模型:资源(CPU IO MEM)的耗损评估性能好坏
  7. 执行器:根据最优执行计划,执行SQL语句,得出执行结果
    执行结果:需要的数据在磁盘的xxxx位置上
  8. 提供查询缓存(query_cache:默认是没开启的),会使用redis tair替代查询缓存功能
  9. 提供日志记录(glog,日志管理章节):binlog二进制日志,默认是没开启的。

存储引擎层

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

逻辑结构

在这里插入图片描述
扩:
SHOW DATABASES:展示所有可访问的的数据库
USE Databasename:进入名为Databasename的数据库
SHOW TABLES:展示进入的数据库的所有表
SHOW COLUMNS FROM tablename: 显示表tablename的属性,属性类型,键信息,是否允许使用NULL,默认值以及表的其他信息。
SHOW INDEX FROM tablename:显示表tablename上所有索引的详细信息,包括主键。
DESC tablename:显示表tablename上所有字段的详细信息。
SHOW TABLE STATUS LIKE tablename\G:报告MySQL DBMS性能和统计信息的详细信息。

数据库:数据库是具有相关数据的表的集合。
表:表是包含数据的矩阵。数据库中的表看起来像一个简单的电子表格。
列(字段):一列(数据元素)包含一种相同类型的数据,例如一列邮政编码。
行(记录):行(=元组,条目或记录)是一组相关数据,例如一个账户的账号密码等数据。

物理结构

在这里插入图片描述
为了方便数据的存储和读写操作,MySQL所管理的数据在磁盘中需是连续的一段存储空间,MySQL表的物理结构由段、区、页构成:

  1. 段:一个表就是一个段,可以由一个区或多个区构成,而且这多个区不一定连续;
  2. 区(簇):构成段,一个区默认为1M,由64个连续的页构成;
  3. 页:一个页默认大小为16kb,由4个连续的block构成(1个block为4kb,由8个扇区构成)。
发布了38 篇原创文章 · 获赞 16 · 访问量 2315

猜你喜欢

转载自blog.csdn.net/JAVA_php_Jack/article/details/104573425