美文网首页
执行一条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