MySQL的那点事儿

早上出门前,马刺已经占领火箭大半城池,不出意外的话,今年的巅峰对决,会是传统与新锐的又一次史诗级别的对话。从认识马刺以来,一直被其团队精神感动,每个人都有发挥的机会,每个人都可能在某个不经意的时间点成为超级英雄。不知道为什么,从小就不是有英雄情结的少年,反倒是那些名不见经传,却往往给人意想不到的惊喜的小人物让我记忆犹新,可能那些并不具有足够天赋,多数需要坚持与付出的现实,来得更加真切一些。默默低头,寻找自己平凡生活的小小英雄梦。

今天的任务非常的简单,小采风和看官们一起,学习MySQL体系结构和MySQL主从架构,开始今天的学习之旅。

一、MySQL体系结构

话不多说,上图1:

图1:MySQL体系结构

具体分析:

a)存储引擎:插件式服务,根据具体业务需要,选择合适的存储引擎;同样也可以根据实际需求,开发自己的存储引擎;存储引擎是针对于具体的表,而不是针对数据库;

b)MySQL服务器层:跨存储引擎的服务均在这层;DDL和DML执行,均在这层实现;

那么来自客户端的一条SQL语句,在MySQL的服务器内部,究竟是如何实现的呢?我们来深入了解MySQL服务层。

(1)服务器检查是否可以在查询缓存中命中:

基于Hash查找,SQL语句需要完全相同;查询缓存中的SQL语句涉及的表,即使是无关字段的更新,也会带来查询缓存中SQL的更新,具有一定的资源消耗;查询缓存时会加锁,读写频繁的系统中查询缓存使用效率低下。介于以上原因,建议关闭查询缓存。

(2)服务器端进行SQL解析,预处理,再由优化器生成对应的执行计划:

解析环节,包括使用MySQL语法校验规则验证,关键字的使用是否正确,顺序是否合理等;预处理环节,包括表和数据列是否正常存在,别名是否存在歧义等;

这里着重强调查询优化器的作用,其根据存储引擎提供的关于表的统计信息,包括行数和字段类型等,由成本模型生成最优的执行计划,其所认为的最优并不能简单等同于人眼中的最优,更为关键的是从不考虑并发环节中加锁对查询性能的影响,这一点其实并不是合理的。那么它可以实现哪些优化呢?

根据存储引擎提供的统计信息,重新定义表的关联顺序;参考where语句和库表的结构设计,将外连接转换为内连接;使用等价变化规则,简化where过滤条件中的规则;将子查询转换为关联表;提前终止查询,如limit限制输出等;

MySQL的体系结构,暂时先告一段落,让我们重振旗鼓,来到MySQL主从架构中主场地。

二、MySQL主从架构

首先,介绍一下主从架构,图2:

图2:MMM架构

主从架构工作原理:

数据库服务器的访问请求,包括读(select)、写(非select)请求,其中读请求占据大量;读写请求均可在主库上进行,从库上最好只进行读请求,如果从库上进行写请求,难以保证主库从库的数据一致性;通过程序或者中间件的方式,在主库上实现读写分离,将读操作分离到从库,主库主要集中在写操作;利用程序、软件或者硬件的方式,实现从库上读操作负载均衡;

那么主库的写操作,如何同步到从库上呢?让我们一步步揭开主从复制的原理。主从复制中的主从延迟,是至关重要的概念。

现在,我们看一下主从复制的原理,如图3:

图3:主从复制原理

(1)主库将更新以事件记录到二进制日志中;

(2)从库开启IO线程,与主库建立普通连接;主库开启二进制转储线程,将二进制日志中的内容发送到从库;从库IO线程收到主库的内容后,写入到从库的中继日志中;

此处需要注意的是,二进制转储线程不是轮询的,如果该线程追改上主库的更新线程,则进入sleep状态,由主库进行唤醒;二进制日志与中继日志相同;

(3)从库的SQL线程,读取并且重放中继日志中的事件,实现与主库的一致;

在主从复制的过程中,有两点需要看官们注意:

(1)读取二进制日志的两种方式:

基于日志点的读取,利用偏移量对从库进行更新,如果偏离量发生错误,则会致使主从数据的不一致;基于GTID(全局事务唯一ID)的读取,从库通知主库已经执行的GTID,主库告知从库没有执行的GTID,保证主从数据库的一致;

(2)二进制日志的两种格式:

基于statement的日志(SBR),记录一个事件中变化的行,所以日志文件小,节省网络IO,但是对于非确定性函数,无法保证主从的一致;基于row日志(RBR),记录所有行的变化,对于非确定函数也可以保证主从的一致;

小采风伸伸懒腰,离开键盘的时候,不出意外的马刺晋级总决赛,今年又是一场大战。什么算作一支强队,什么算作一种精神,马刺就是我心中的代表,永远的团队协作,永远的步调一致,永远的每个人都是王者,真正好的教练,就是能够开发每个人的潜能。莱昂纳德,平民MVP,低调的王者,后面新的期待。

关于SQL的学习,前前后后读过三本书。《SQL入门经典》《SQL必知必会》《MySQL必知必会》,相比较而言最后一本书真的是简洁清晰,一目了然。最近,重读了里面的部分章节,确实字字珠玑。如果期待进行SQL语句的学习,其确实是一本非常理想的入门级课本。

如果简短的文章对您有所帮助,记得转发哦哦,当然关注就更好啦!!!

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

推荐阅读更多精彩内容