MYSQL(01)-模块介绍

整体框架

MySQL 可以分为 Server 层和存储引擎层(Storage Engines)两部分

Server 层

Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖了Mysql的大多数核心服务功能,以及内置函数,存储过程,触发器,试图等(所有的跨存储以前宁的操作)

Storage Engines层

主要是负责数据的存储和提取,其架构模式是插件式的,支持InnoDB,MyISAM,Memory等多个存储引擎。InnoDB是最常用的,也是Mysql5.5.5版本开始成为默认的存储引擎

连接器

  • 负责维护客户端的链接,获取权限,管理链接
  • 如果你没有后续的动作,这个连接就处于空闲状态(show processlist查看所有链接)
  • 客户端如果太长时间没动静,连接器就会自动将它断开。这个时间是wait_timeout来控制的,默认8小时
  • 短链接:每次完成执行都断开链接(建立链接的过程比较耗时,建议尽量使用长链接)
  • 长连接:客户端维持请求一直使用一个链接(但是全部使用长链接会导致内存使用过快)
  • 解决长链接内存过大的问题:Mysql5.7之后,可以每次执行一个较大的操作后,执行mysql_reset_connection开重新初始化链接资源,此过程无需重连和权限校验

查询缓存

MYSQL查询一个请求会先看查询缓存是否存在,之前执行过的缓存会已KV的形式存储在内存中,如果有则直接返回,但是默认建议不开启查询缓存,因为查询缓存失效频率太高,只要对一个表进行更新,那么这个表上所有的查询缓存都会被清空。mysql8.0已经将查询缓存整个删除了

分析器

分析器分析SQL语句进行语法分析,如果判断语法不对则会返回"You have an error in your SQL syntax" 的错误提醒

优化器

在经过分析器判断语法正确后,需要通过优化器进行优化处理,优化器是在表中存在多个索引的时候,决定使用哪个索引,或者在一个语句有多表关联查询(join)的时候决定表的链接顺序

执行器

用于语句执行

  • 先判断你有没有这个表的执行查询的权限,没有返回权限错误的信息
  • 根据引擎提供额执行接口执行语句查询
常用引擎,区别对比
引擎 Innodb Myisam
存储文件 .frm 表定义文件
.ibd 数据文件
.frm 表定义文件
.myd 数据文件
.myi索引文件
锁表 表锁、行锁 表锁
事物 ACID 不支持
CRUD 读、写 读多
count 扫表 专门存储的地方
索引结构 B+Tree(聚集索引) B+Tree(非聚集索引)
版本默认 5.7版本之后的默认引擎 5.7版本之前的默认引擎

一条查询语句是如何执行的

上述MYSQL各个模块的顺序就是一条查询语句的执行顺序

  1. 连接器创建客户端与服务器之间的链接
  2. 首先查询是否有查询缓存如果有则直接使用
  3. 如果没有查询缓存则到达分析器进行SQL语句的语法分析
  4. 确认语法无误之后,通过优化器进行查询优化
    5.最终通过执行器调用引擎执行查询

一条更新语句是如何执行的

1.将ID为2的一条数据+1

  1. 执行器查询ID = 2的之一行,ID是逐渐,引擎使用B树搜索找到这一行,如果ID=2这一行数据在内存中(change buffer中),则直接返回给执行器,否则需要从磁盘读取到内存中。
  2. 执行器拿到行数据进行+1操作。再调用引擎写入新数据
  3. 引擎将这行数据更新到内存中,同时将这个数据记录到redo log中,此时redo log 处于prepare状态。然后告知执行器完成,随时可以提交数据
    5.执行器生成操作的binlog,并把binlog写入磁盘
    6.执行器调用引擎的提交事务接口,引擎把刚刚写入的redo log改成提交状态更新完成

过程中涉及到的几个角色,主要是涉及到redo log(重做日志)和 binlog(归档日志)这两个模块

redo log

如果每一次的更新操作都需要写进磁盘,然后磁盘也要找到对应的那条记录,然后更新,整个过程IO成本过高,为了解决上述问题,可以通过WAL技术来实现(Write-Ahead Logging),原理是,当有一条更新记录的时候,innodb先将操作记录到redo log中,并更新内存change buffer ,这个时候更新就完成了,然后Innodb会在是到的时候将操作记录更新到磁盘中,往往是系统比较空闲,或者change buffer 写满,或者redo log写满的时候

  • redo log 是[固定大小的,一组四个文件,每个文件1G大小
  • 有了redo log,innodb可以保证数据库异常数据也不丢失,保证了数据的原子性

binlog

上述说的redo log是innodb引擎特有的,而binlog则是Server层自己的日志,又称归档日志。为什么有两个日志,因为MYSQL之前没有innodb引擎。而且binlog只用于归档。他们有一下不同

  • redo log是innodb特有的,而binlog是mysql的server层实现的,所有引擎都可以使用
  • redo log 是物理日志,记录数据也上做了什么修改 ,binlog是逻辑日志,记录这个语句的原始逻辑"比如给ID=2 这一行的c字段加一"
  • redo log 是循环写的,空间固定用完会刷新到磁盘,而binlog是最追加写入的
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容

  • 转 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    吕品㗊阅读 9,718评论 0 44
  • 一、优化概述 二、查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profi...
    远方不会远阅读 958评论 0 4
  • 一、MySQL的主要适用场景 1、Web网站系统 2、日志记录系统 3、数据仓库系统 4、嵌入式系统 二、MySQ...
    零一间阅读 684评论 0 6
  • 四天的假期就这样在无聊中度过,也许天生就是劳碌命,想让自己放松一下都不行,不是没心情就是有烦心事,现在更...
    龙潭1132宋淑萍阅读 144评论 0 1
  • 一切都是记忆的重复,爱的精灵依然愿意选择不染一丝尘世。带着自己的天然呆直到遇到自己的双生魂,用爱唤醒沉睡的记忆以及...
    爱妈咪阅读 384评论 2 0