MySQL系列:(二)MySQL体系结构

admin 2020年10月14日 1,073次浏览

1、MySQL两种连接方式

# TCP/IP方式连接
[root@localhost ~]# mysql -uUSER_NAME -p -h "MYSQL_SERVER_IP" -P"MYSQL_SERVER_PORT"
# socket方式连接
[root@localhost ~]# mysql -uUSER_NAME -p

2、MySQL中mysqld服务器进程结构

2.1、SQL语言分类

  • DQL 数据查询语言
  • DDL 数据定义语言
  • DML 数据操作语言
  • DCL 数据控制语言

2.2、连接层

  • 提供链接协议(TCP/IP,Socket)
  • 验证用户名、密码、IP地址等信息的合法性
  • 派生一个专用连接线程(接受语句、返回结果)
    可使用 show processlist; 查看已连接线程
  • 将语句交给下一层处理

2.3、SQL层(SQL接口)

  • 接受语句
  • 语法检查和SQL_MODE
  • 语义检查与权限检查
  • 解析器进行语句解析,生成执行计划(解析树)
  • 通过优化算法(基于执行代价),根据算法,找到代价最低的执行计划。
    代价:CPU IO MEM
  • 优化器会选择最优的执行方法
  • 语句执行器真正运行SQL语句
  • 提供查询缓存(默认不开启)
  • 日志记录(审计日志、通用日志、二进制日志,默认不开起)

2.4、存储引擎层

本层是真正和磁盘打交道的一个层次,根据SQL层提供的取数据的方法,拿到数据,返回给SQL,结构化成二维表,再由连接层线程返回给用户。

2.5、MySQL逻辑存储结构


  • 用于存储表的地方

  • 用于存储数据,表包含:列(字段)、列属性、数据行(记录)、表属性(元数据)

2.6、MySQL物理存储结构

  • 使用文件系统上的目录来表示

  • 表:

    • MyISAM(ext2文件系统)

      user.frm:存储的表结构(列,列属性)

      user.MYD:存储的数据记录

      user.MYI:存储索引

    • InnoDB(XFS文件系统)

      time_zone.frm :存储的表结构(列,列属性)

      time_zone.ibd :存储的数据记录和索引

      ibdata1 : 数据字典信息

2.7、innoDB的段、区、页

  • 在非分区表的情况下,数据库每次默认分配64个连续的页,每个页16K,合计空间1M,这个空间称之为一个区。
  • MySQL的表根据存储需求,会由多个区组成一个表,我们把一个表称之为一个段