• 三、MySQL体系结构


    于2021年1月20日重新编辑

    MySQL基于CS架构

    mysql分为服务端和客户端,服务端仅一个,而客户端可以有多个,每个shell都能算一个单独的客户端. 而服务端也设置了默认的最大连接数,一般是151,可以自己调节数量。

    两种连接方式

    #TCP/IP方式(远程、本地):
    $ mysql -uroot -p123 -h 10.154.0.111 -P3306
    #Socket方式(仅本地):
    $ mysql -uroot -p123 -S /tmp/mysql.sock
    

    实例
    实例 = mysqld后台守护进程+Master Thread +干活的Thread+预分配的内存
    相当于公司=老板+经理+员工+办公室

    mysql的体系结构



    连接层
    (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)优化器:根据解析器得出的多种执行计划,进行判断,选择最优的执行计划。代价模型:资源(CPU IO MEM)的耗损评估性能好坏。
    (7)执行器:根据最优执行计划,执行SQL语句,产生执行结果。执行结果:在磁盘的某个位置上。
    (8)提供查询缓存(默认是没开启的),会使用redis tair替代查询缓存功能。
    (9)提供日志记录(日志管理章节):binlog,默认是没开启的。

    存储引擎层
    负责根据SQL层执行的结果,从磁盘上读取数据。将16进制的磁盘数据返回SQL层,结构化生成二维表,
    再转给连接层的专用线程返回给用户,最终展示出来结果。

    mysql逻辑结构



    物理存储结构



    数据库的物理存储结构
    登录mysql创建数据库test

    $ mysql -uroot -p
    mysql> create database test;
    mysql> exit
    
    $ cd /usr/local/mysql-5.7.26/data
    

    会发现创建的数据库test其实是一个目录


    表的物理存储结构

    #进入mysql数据库
    $ cd mysql
    #查看user表
    $ ll user.*
    -rw-r-----. 1 mysql mysql 10816 Jan 17 07:15 user.frm
    -rw-r-----. 1 mysql mysql   340 Jan 17 07:15 user.MYD
    -rw-r-----. 1 mysql mysql  4096 Jan 17 07:15 user.MYI
    

    MyISAM(一种引擎)的表:

    -rw-r----- 1 mysql mysql   10816 Apr 18 11:37 user.frm #存储列相关信息(列,列属性)
    -rw-r----- 1 mysql mysql     396 Apr 18 12:20  user.MYD #存储数据行(每一行都是数据)
    -rw-r----- 1 mysql mysql    4096 Apr 18 14:48 user.MYI #索引信息
    

    InnoDB(默认的存储引擎)的表:

    -rw-r----- 1 mysql mysql    8636 Apr 18 11:37 time_zone.frm  #存储列相关信息
    -rw-r----- 1 mysql mysql   98304 Apr 18 11:37 time_zone.ibd #存储数据行+索引信息
    
    $ cd /usr/local/mysql-5.7.26/data
    $ ll ibdata1 
    -rw-r-----. 1 mysql mysql 12582912 Jan 17 07:23 ibdata1 #InnoDB数据字典信息,也就是元数据
    

    参考资料: ibdata文件理解

    表的段、区、页

    段:也就是一个表,包含一个或多个区
    区:一个区包含64个连续的页,每个页16k大小,64个页共1M
    页:最小的存储单元,默认16k


    学习来自:郭老师博客,老男孩深标DBA课程 第二章

    今天的学习是为了以后的工作更加的轻松!
  • 相关阅读:
    进入Docker 报错
    Oauth一直无限重定向
    jquery.click() not working in iOS
    IOS 系统 form 表单提交的问题;一直当前页面刷新
    Word 搜索功能显示bug
    百度脑图bug
    微信分享链接添加参数后缩略图不显示如何解决?
    微信分享到朋友圈 QQ空间 代码实现
    文献复现 | The support of human genetic evidence for approved drug indications
    生物医药领域 | 知名投资人 | VC | PE | IBD | 公募 | 私募
  • 原文地址:https://www.cnblogs.com/tz90/p/12390858.html
Copyright © 2020-2023  润新知