MySQL 体系结构

MySQL 体系结构

Acha
2021-04-01 / 0 评论 / 136 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年04月02日,已超过1167天没有更新,若内容或图片失效,请留言反馈。
内容介绍:
    C/S 结构
    实例构成
    SQL语句分类
    三层结构
    逻辑存储结构
    物理存储结构
    innodb(段页区)

C/S 结构

连接方式:

  • TCP/IP
    • mysql -u [用户名] -p [密码] -h [主机] -P [端口]
  • Socket
    • mysql -u [用户名]-p [密码] -S /tmp/mysql.sock


实例构成

mysqld + master thread + 干活的Thread + 预分配的内存

守护进程   主进程        进程        内存

SQL语句

 结构化的查询语言

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

 例如:mysql> select user,host from mysql.user;

三层结构

  • 连接层
  1. 连接协议
- Socket
- TCP/IP
  1. 验证用户名(root@localhost)密码合法性,进行授权表匹配
  2. 派生一个专用连接线程(接收SQL,返回结果)

  • SQL层
  1. 验证SQL语法和SQL_MODE
  2. 验证语义
  3. 验证权限
  4. 解析器进行语句解析,生成执行计划(解析树)
  5. 优化器(各种算法,基于执行代价),根据算法,找到代价最低的执行计划
  • CUP
  • IO
  • MEM
  1. 执行器按照优化器选择执行计划,执行SQL语句,得出获取数据的方法
  2. 提供query cache(默认关闭),一般不开,会用redis
  3. 记录操作日志(binlog),默认关闭

  • 存储引擎层
  1. 与物理硬件交互

  2. 根据SQL层提供的取数据的方法;获取数据返回给SQL;结构化成表,连接层线程返回给用户

逻辑存储结构

  • 数据行
  • 表属性

物理存储结构

库:使用 FS 上的目录来表示

表:

  • MyISAM(ext2)
    • user.frm : 存储的表结构(列,列属性)
    • user.MYD : 存储的数据记录
    • user.MYI : 存储索引
  • InnoDB(XFS)
    • time_zone.frm : 存储的表结构(列,列属性)
    • time_zone.ibd : 存储的数据记录和索引
    • ibdata1 : 数据字典信息

innodb(段页区)

  • 区:16K
  • 页:64个区组成,大小为1M
  • 段:多个连续的页组成(分区表除外)
0

评论

博主关闭了当前页面的评论