数据库 | 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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容