美文网首页
执行一条sql语句的过程和mysql的存储结构(逻辑结构和物理结

执行一条sql语句的过程和mysql的存储结构(逻辑结构和物理结

作者: Odven | 来源:发表于2020-06-10 10:22 被阅读0次

1) 执行一条sql语句的过程

1.  连接层
(1) 提供连接协议
        Socket  
        TCPIP
(2) 验证用户名(root@localhost)密码合法性,进行匹配专门的授权表。
(3) 派生一个专用连接线程(接收SQL,返回结果)
          mysql> show processlist;

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

3. 存储引擎层
真正和磁盘打交道的一个层次
根据SQL层提供的取数据的方法,拿到数据,返回给SQL,结构化成表,再又连接层线程返回给用户。

2) mysql的存储结构(逻辑结构和物理结构)

1. MySQL逻辑存储结构
库                                            --->   Linux目录
create database zabbix charset utf8mb4;       --->   mkdir /wordpress
show databases;                               --->   ls /
use zabbix;                                   --->   cd /wordpress
表                                            --->   Linux的文件
列(字段)                                            无
列属性                                                无
数据行(记录)                                 --->   Linux数据行
表属性(元数据)                               --->   Linux 文件属性

2. MySQL物理存储结构
2.1
库:                 使用文件系统上的目录来表示 
表: 
    MyISAM
        user.frm  : 存储的表结构(列,列属性)
        user.MYD  :  存储的数据记录
        user.MYI  : 存储索引

    InnoDB
        gy.frm  : 存储的表结构(列,列属性)
        gy.ibd  : 存储的数据记录和索引
        ibdata1 :  数据字典信息

2.2 innodb 段 区 页
一般情况下(非分区表)
一个表就是一个段
一个段由多个区构成
一个区在(16k),64个连续的页,1M大小

相关文章

网友评论

      本文标题:执行一条sql语句的过程和mysql的存储结构(逻辑结构和物理结

      本文链接:https://www.haomeiwen.com/subject/lmdutktx.html