关于java-ee:数据库-001MySQL梳理系列一

52次阅读

共计 1748 个字符,预计需要花费 5 分钟才能阅读完成。

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

正文完
 0