数据库 | 001-MySQL梳理系列(一)

MySQL基本组成

SQL执行流程

  • Server 层主要包括链接器、查询缓存、分析器、优化器、执行器,包含了MySQL主要的不少核心功能,以及全部的内置函数、存储过程、触发器、视图等,其实就是全部跨存储引擎的功能都是在这一层实现的
  • 存储引擎层,主要负责数据的存储和读取,是以插件的形式存在的 ,支持如 InnoDBMyISAMMemory 等多个存储引擎,如今默认为 InnoDB

查询缓存

  • 当一个SQL执行时首先会进入查询缓存
  • 查看以前是否执行过该语句,若是执行过则会以key-value的形式保存在缓存中,key是查询语句,value是查询结果
  • 若是缓存命中则直接返回结果,若是查询语句不在缓存中继续后面的流程
  • 大多数状况下咱们不推荐使用查询缓存,由于缓存失效很是频繁,只要一个更新,那么这个表上全部的缓存都会失效,吐过数据的更新比较多,那么缓冲命中的效率很低,不断的在失效
  • 在MySQL中提供了参数 query_cache_type 参数来设置,默认是 DEMAND ,表示对默认的SQL都不使用查询缓存,若是要对特的语句进行缓存查询,则可使用 SQL_CACHE 来显示的指定,如 select SQL_CACHE * from T where ID=1;
  • 在MySQL8.0 开始,查询缓存整个功能模块已经删除掉再也不拥有

分析器

  • 分析器主要包含词法分析语法分析
  • 词法分析主要分析一条SQL中各个字符串表明什么,好比 select 标记出来,这就是一个查询,在具体的表名,查询 的字段等等所有分析出来
  • 语法分析主要是分析SQL语句是否符合MySQL的规范,若是咱们SQL写的有问题,那么常常看到的一个异常就是 You have an error in your SQL syntax 的提示

优化器

  • 对咱们的SQL进行优化,获得更高的执行计划
  • 若有多个索引时肯定要用那个索引
  • 当有多变联查join 时,查询表的顺序
  • 对查询条件和语句的优化

执行器

  • 首先校验是否有对这张表的访问权限,若是没有权限则会报错
  • 若是有,则根据引擎接口打开表进行数据的查询筛选

Buffer Pool

  • 默认大小128MB, 偏小
  • 对于16核32G机器,能够分配2G内存,配置文件:my.ini 配置:
[server]
innodb_buffer_pool_size = 2147483648

数据页

  • MySQL中对数据进行抽象,按照数据页的形式来存放到文件,当查询时,首先定位到要查询数据所在的数据页,以后将整个数据页加载到Buffer Pool 中,
  • 数据页默认的大小是 16KB , 也就是一页数据包含16KB的数据
  • BufferPool 中的数据页通常咱们叫缓存页,默认状况下缓存页与磁盘上的数据页大小是对应的
  • 对于每一个缓存页都有一个描述信息
  • 描述信息包括:数据页的所属表空间,数据页的标号,这个缓存页在Buffer Pool 中的内存地址以及其余一些信息
  • Buffer Pool 中,全部的描述信息都在最前面,而后各个缓存页放在后面

  • 描述数据大小至关于缓存页大小的5% 左右,也就是大概800字节,因此当咱们设置buffer pool 的大小为128MB ,可是实际上 Buffer Pool 的真实大小会超出一些,可能有有130MB 左右,这多出来的就是每一个缓存页的描述信息

表空间

  • 平时咱们建立张表时都会在磁盘上对应着一个表名.ibd , 这样的磁盘数据文件,这就是表空间的概念和物理体现
  • 对于一些系统表空间可能存在着对应多个磁盘文件,咱们本身建立的表对应的表空间通常都是对应一个 表名.ibd 的数据文件

数据区

  • 在表空间中有太多的数据页很差管理,这是引入了数据区的概念,英文:extent
  • 一个数据区中有连续的64个数据页,每一个数据页16kb, 因此每一个数据区大小是1MB
  • 同时265个数据区被划分为一组
  • 在表空间中第一组数据区的第一个数据区前三个数据页是固定的,存放一些特殊的描述性的信息缓存

    • FSP_HDR 数据页: 存放一些表空间和这一组数据区的属性
    • IBUF——BITMAP 数据页:存放这组数据页全部的 insert buffer 的一些信息
    • INODE 数据页:存放一些特殊信息
  • 表空间中其余各组数据区的第一个数据区的头两个数据页都是存放特殊信息的

本文由AnonyStar 发布,可转载但需声明原文出处。
欢迎关注微信公帐号 :云栖简码 获取更多优质文章
更多文章关注笔者博客 : 云栖简码 i-code.online
相关文章
相关标签/搜索