MySQL 是怎样运行的:从根儿上理解 MySQL
在路上2017
曾先后在互联网金融、支付公司、阿里巴巴、滴滴担任技术专家角色,擅长分布式、高并发、海量数据、支付资金相关的架构
展开
-
万里长征第一步(非常重要) —— 如何愉快的阅读本小册
购买前警告⚠️此小册并非数据库入门书籍,需要各位知道增删改查是啥意思,并且能用 SQL 语言写出来,当然并不要求各位知道的太多,你甚至可以不知道连接的语法都可以。不过如果你连SELECT、INSERT这些单词都没听说过那本小册并不适合你。此小册非正经科学专著,亦非十二五国家级规划教材,也没有大段代码和详细论证,有的全是图,喜欢正经论述的同学请避免购买本小册。此小册作者乃一无业游民...转载 2019-09-01 16:12:07 · 421 阅读 · 0 评论 -
说过的话就一定要办到 —— redo 日志(上)
redo日志(上)标签: MySQL是怎样运行的事先说明本文以及接下来的几篇文章将会频繁的使用到我们前边唠叨的InnoDB记录行格式、页面格式、索引原理、表空间的组成等各种基础知识,如果大家对这些东西理解的不透彻,那么阅读下边的文字可能会有些吃力,为保证您的阅读体验,请确保自己已经掌握了我前边唠叨的这些知识。redo日志是个啥我们知道InnoDB存储引擎是以页为单位来管理存储空间的,我...转载 2019-09-03 13:09:23 · 517 阅读 · 0 评论 -
谁最便宜就选谁 —— MySQL 基于成本的优化
基于成本的优化标签: MySQL 是怎样运行的什么是成本我们之前老说MySQL执行一个查询可以有不同的执行方案,它会选择其中成本最低,或者说代价最低的那种方案去真正的执行查询。不过我们之前对成本的描述是非常模糊的,其实在MySQL中一条查询语句的执行成本是由下边这两个方面组成的:I/O成本我们的表经常使用的MyISAM、InnoDB存储引擎都是将数据和索引都存储到磁盘上的,当我们想...转载 2019-09-03 13:07:58 · 761 阅读 · 0 评论 -
神兵利器 —— optimizer trace 的神器功效
otpimizer trace 表的神奇功效标签: MySQL 是怎样运行的对于MySQL 5.6以及之前的版本来说,查询优化器就像是一个黑盒子一样,你只能通过EXPLAIN语句查看到最后优化器决定使用的执行计划,却无法知道它为什么做这个决策。这对于一部分喜欢刨根问底的小伙伴来说简直是灾难:“我就觉得使用其他的执行方案比EXPLAIN输出的这种方案强,凭什么优化器做的决定和我想的不一样呢?”...转载 2019-09-01 16:21:18 · 1128 阅读 · 0 评论 -
快速查询的秘籍 —— B+ 树索引
B+树索引标签: MySQL是怎样运行的前边我们详细唠叨了InnoDB数据页的7个组成部分,知道了各个数据页可以组成一个双向链表,而每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表,每个数据页都会为存储在它里边儿的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组中的记录即可快速找到指定的记录(如果你对这段话有一丁点...转载 2019-09-01 16:20:21 · 878 阅读 · 1 评论 -
后悔了怎么办 —— undo 日志
undo 日志标签: MySQL 是怎样运行的事务回滚的需求我们说过事务需要保证原子性,也就是事务中的操作要么全部完成,要么什么也不做。但是偏偏有些时候做到一半的时候会出一些情况,比如:情况一:事务执行过程中可能遇到各种错误,比如服务器本身的错误,操作系统错误,甚至是突然断电导致的错误。情况二:程序员可以在事务执行过程中手动输入ROLLBACK语句结束当前的事务的执行。这...转载 2019-09-01 16:19:48 · 461 阅读 · 0 评论 -
好东西也得先学会怎么用 —— B+ 树索引的使用
B+树索引的使用标签: MySQL 是怎样运行的我们前边详细、详细又详细的唠叨了InnoDB存储引擎的B+树索引,我们必须熟悉下边这些结论:每个索引都对应一棵B+树,B+树分为好多层,最下边一层是叶子节点,其余的是内节点。所有用户记录都存储在B+树的叶子节点,所有目录项记录都存储在内节点。InnoDB存储引擎会自动为主键(如果没有它会自动帮我们添加)建立聚簇索引,聚簇索引的叶子节...转载 2019-09-01 16:19:14 · 650 阅读 · 1 评论 -
调节磁盘和CPU的矛盾 —— InnoDB 的 Buffer Pool
InnoDB 的 Buffer Pool标签: MySQL 是怎样运行的缓存的重要性通过前边的唠叨我们知道,对于使用InnoDB作为存储引擎的表来说,不管是用于存储用户数据的索引(包括聚簇索引和二级索引),还是各种系统数据,都是以页的形式存放在表空间中的,而所谓的表空间只不过是InnoDB对文件系统上一个或几个实际文件的抽象,也就是说我们的数据说到底还是存储在磁盘上的。但是各位也都知道,磁...转载 2019-09-01 16:18:36 · 393 阅读 · 0 评论 -
查询优化的百科全书 —— Explain 详解(下)
Explain 详解(下)标签: MySQL 是怎样运行的执行计划输出中各列详解本章紧接着上一节的内容,继续唠叨EXPLAIN语句输出的各个列的意思。Extra顾名思义,Extra列是用来说明一些额外信息的,我们可以通过这些额外信息来更准确的理解MySQL到底将如何执行给定的查询语句。MySQL提供的额外信息有好几十个,我们就不一个一个介绍了(都介绍了感觉我们的文章就跟文档差不多了~)...转载 2019-09-01 16:17:42 · 222 阅读 · 0 评论 -
查询优化的百科全书 —— Explain 详解(上)
Explain 详解(上)标签: MySQL 是怎样运行的一条查询语句在经过MySQL查询优化器的各种基于成本和规则的优化会后生成一个所谓的执行计划,这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等。设计MySQL的大叔贴心的为我们提供了EXPLAIN语句来帮助我们查看某个查询语句的具体执行计划,本章的内容就是为了帮助大家看懂...转载 2019-09-01 16:16:57 · 249 阅读 · 0 评论 -
MySQL的调控按钮 —— 启动选项和系统变量
启动选项和配置文件标签: MySQL 是怎样运行的如果你用过手机,你的手机上一定有一个设置的功能,你可以选择设置手机的来电铃声、设置音量大小、设置解锁密码等等。假如没有这些设置功能,我们的生活将置于尴尬的境地,比如在图书馆里无法把手机设置为静音,无法把流量开关关掉以节省流量,在别人得知解锁密码后无法更改密码~ MySQL的服务器程序和客户端程序也有很多设置项,比如对于MySQL服务器程序,我...转载 2019-09-01 16:15:45 · 482 阅读 · 0 评论 -
装作自己是个小白 —— 重新认识MySQL
初识MySQL标签: MySQL是怎样运行的MySQL的客户端/服务器架构以我们平时使用的微信为例,它其实是由两部分组成的,一部分是客户端程序,一部分是服务器程序。客户端可能有很多种形式,比如手机APP,电脑软件或者是网页版微信,每个客户端都有一个唯一的用户名,就是你的微信号,另一方面,腾讯公司在他们的机房里运行着一个服务器软件,我们平时操作微信其实都是用客户端来和这个服务器来打交道。比如...转载 2019-09-01 16:14:30 · 357 阅读 · 0 评论 -
浅析MySQL中的Index Condition Pushdown (ICP 索引条件下推)和Multi-Range Read(MRR 索引多范围查找)查询优化
本文出处:http://www.cnblogs.com/wy123/p/7374078.html(保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他)ICP优化原理Index Condition Pushdown (ICP),也称为索引条件下推,体现在执行计划的上是会出现Using index condi...转载 2019-09-10 19:45:49 · 137 阅读 · 0 评论