MySQL基本组成

SQL执行流程

Server 层主要包括连接器、查询缓存、分析器、优化器、执行器,包含了MySQL主要的很多核心功能,以及所有的内置函数、存储过程、触发器、视图等,其实就是所有跨存储引擎的功能都是在这一层实现的

存储引擎层,主要负责数据的存储和读取,是以插件的形式存在的 ,支持如 InnoDB 、MyISAM、Memory 等多个存储引擎,现在默认为 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 数据页:存放一些特殊信息

表空间中其他各组数据区的第一个数据区的头两个数据页都是存放特殊信息的

mysql 表 区 块 页_数据库 | 001-MySQL梳理系列(一)相关推荐

  1. mysql 表组是什么_数据库中属性组究竟是什么含义?

    展开全部 属性组的含义就是一组具有相互联系的属性组合而62616964757a686964616fe58685e5aeb931333433626564成的. 属性是比如一张表格中的学号和姓名等.一个事 ...

  2. 怎么运用索引查处mysql表中的数据_深入理解MySQL数据库索引原理及实现,快速检索数据库 MySQL数据库使用教程...

    免费学习推荐: 一.索引的概念 1.索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址 (类似于C语言的链表通过指针指向数据记录的内存地址) . 2.使用索引后可以不用 ...

  3. mysql联表查询多记录显示_数据库:MySQL(多表的表记录的查询)(三)

    一.外键约束 1.创建外键 ---每一个班主任会对应多个学生 , 而每个学生只能对应一个班主任----主表 CREATE TABLE ClassCharger( id TINYINT PRIMARY ...

  4. mysql表空间名字查询_数据库表空间信息查询

    数据库表空间信息查询 --查看表空间的名称及大小 www.2cto.com SELECT T.TABLESPACE_NAME, ROUND(SUM(D.BYTES / (1024 * 1024)), ...

  5. mysql表之间怎么联动_数据库之间的数据联动调整方法、装置及系统的制作方法...

    数据库之间的数据联动调整方法.装置及系统的制作方法 [技术领域] [0001]本发明涉及一种信息处理技术领域,特别是涉及一种数据库之间的数据联动调整方法.装置及系统. [背景技术] [0002]随着信 ...

  6. mysql表设计 不同价格_数据库表设计,不同的属性值会有不同的价格

    请问大神们,这种结构如何实现,目前是以下做法: 有属性名表 goods_attr 有属性值表 goods_attr_value 但是 不同的属性值选择会有不同的价格, 这种多个值决定一个值的情况真没遇 ...

  7. mysql表空间过大_详解MySQL表空间以及ibdata1文件过大问题

    ibdata1文件过大 原因分析 ibdata1是一个用来构建innodb系统表空间的文件,关于系统表空间详细介绍参考MySQL官网文档 上面是一个数据库的ibdata1文件,达到了780多G,而且还 ...

  8. mysql表分区数量限制_详解MySQL分区表的局限和限制的代码实例

    本文对Mysql分区表的局限性做了一些总结,因为个人能力以及测试环境的 原因,有可能有错误的地方,还请大家看到能及时指出,当然有兴趣的朋友可以去官方网站查阅. 禁止构建 分区表达式不支持以下几种构建: ...

  9. mysql 搜索标题中字符串_如何在MySQL表中搜索特定字符串?

    使用等于运算符进行完全匹配-select *from yourTableName where yourColumnName=yourValue; 让我们首先创建一个表-mysql> create ...

最新文章

  1. 南大计算机学硕复试,2019南大CS考研复试笔试回忆
  2. 【NLP】谷歌、伯克利联合研究:为5种大型NLP模型,彻底算算这笔账
  3. java3d box 坐标,3d transform的坐标空间及位置
  4. 使用ImageMagick 在图片上绘制粗斜体的中文也许是一个错误。
  5. 惩罚女人的最有效方法!
  6. 导入其他用户的EFS证书
  7. 腾讯想拿到Big Data资源,8h删抓紧时间!!
  8. requests 使用 socks5 协议 的另外一种方式
  9. 五行灵根 鸿蒙珠,异世鸿蒙武神
  10. c#:list转datatable;xtraReport打印
  11. 谣言止于“较真”,腾讯新闻推出微信新闻辟谣小程序
  12. CyanogenMod 官方移植指南
  13. Android 反编绎工具JEB简介及下载
  14. 如何fine tuning
  15. 公司倒闭,新的开始,是好是坏全然不知
  16. torch的拼接函数_Pytorch中的torch.cat()函数
  17. 3D建模怎么学,3D游戏建模怎么学
  18. JAVA开发学习——欢迎来到JAVA开发世界!
  19. 小型机器人底盘Apollo为机器人开发提供完整导航解决方案
  20. PAT Basic Level 1062 最简分数(辗转相除法)

热门文章

  1. 加速编程效率,你不知道的IDEA功能设置
  2. 华为云发布五大新品,这个成功实践也首次对外公开
  3. 是什么让 Python 如此多才多艺?
  4. 苹果春季发布会:绝不玩别人玩剩下的!
  5. Google 程序员消灭 Bug 的 5 大法宝!
  6. 为前端工程之崛起而编程!
  7. Qualcomm 推出下一代物联网专用蜂窝技术芯片组!
  8. Dubbo 沉睡,Spring Cloud 崛起!
  9. 阿里高德城市大脑·智慧交通战略发布,公共服务版首次亮相!
  10. 史上速度最快!DNS 公共服务 1.1.1.1 正式发布