• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!
有趣的mysql pager命令

有趣的mysql pager命令

一、分页结果集 在Linux系统中,我们经常也会使用一些分页查看命令,例如less、more等。同样,MySQL客户端也提供了类似的命令,用来帮助我们对查询结果集进行分页。比如,SHOW ENGINE INNODB STATUS时通过分页看锁信息时是非常有用的,这样就不用一屏到底了。 mysql> pager less ……

MySQL联接查询算法(NLJ、BNL、BKA、HashJoin)

MySQL联接查询算法(NLJ、BNL、BKA、HashJoin)

一、联接过程介绍 为了后面一些测试案例,我们事先创建了两张表,表数据如下: CREATE TABLE t1 (m1 int, n1 char(1)); CREATE TABLE t2 (m2 int, n2 char(1)); INSERT INTO t1 VALUES(1, 'a'), (2, 'b'), (3, 'c')……

MySQL查询优化:Index Merge

MySQL查询优化:Index Merge

一、为什么会有Index Merge? Index Merge 访问方法检索具有多个 range 扫描的行并将它们的结果合并为一个。这里的 range 就是 explain 中的 type: range。此访问方法简单来说就是对单个表的多个索引分别进行条件扫描,然后将它们各自的结果进行集合运算(Intersect/Union)。 MySQL 5.0之前,一个……

MySQL 5.7错误日志中常见的几种Note级别日志解释

MySQL 5.7错误日志中常见的几种Note级别日志解释

看到一篇关于Note日志的文章,挺不错的,转载记录一下。其中在第三种错误日志中增加了一些知识点。 在使用MySQL 5.7的时候,发现了不少在MySQL 5.6上不曾见过的日志,级别为Note,作者梳理了一下,最常见的Note日志以下三种,下面我们来逐个解释。 第一种:Aborted connection [Note] Abor……

从顺序随机I/O原理来讨论MySQL MRR NLJ BNL BKA

从顺序随机I/O原理来讨论MySQL MRR NLJ BNL BKA

一、机械磁盘原理 机械盘由动臂,盘片,读写磁头,主轴组成,磁头是固定不能动的,要读取相应的扇区只能通过盘片的旋转。每一个盘片为双面,每一个面上分布有同心圆的磁道,磁道又分为扇区一般为512 BYTES,现代的磁盘一般外边缘磁道的扇区多,内磁道的扇区少,那么一般读写外边缘磁道的速度更快,因为转速为定值。同时各个不同盘片上半径下同的磁道组成了一个柱面。 下图是一……

使用pt-kill为MySQL保驾护航

使用pt-kill为MySQL保驾护航

运行平稳的数据库,如果遇到CPU狂飙,那很大可能就是慢SQL出现了。DBA首先要保证的是,数据库别跑挂了,所以我们要把那些运行慢的SQL杀死并记录到文件里,以便后面的排查。对于OLTP型业务,主库SELECT类SQL执行不允许超过1s才是合理的;那么对于超过1s的SQL或者对微延迟可以接受查询,理应在从库或者多源库上执行。 那么Percona Tools工……

MySQL查询优化:子查询物化

MySQL查询优化:子查询物化

一、背景 MySQL引入了Materialization(物化)这一关键特性用于子查询(比如在IN/NOT IN子查询以及 FROM 子查询)优化。 具体实现方式是:在SQL执行过程中,第一次需要子查询结果时执行子查询并将子查询的结果保存为临时表 ,后续对子查询结果集的访问将直接通过临时表获得。与此同时,优化器还具有延迟物化子查询的能力,先通过其它条件判断子……

GH-OST:配置使用实践

GH-OST:配置使用实践

一、背景 GitHub 正式宣布以开源的方式发布 gh-ost,GitHub 的 MySQL 无触发器在线更改表定义工具!下面是官方给出 gh-ost 产生的背景。 gh-ost 是 GitHub 在 2016 年 5 月份开源的,目的是解决一个经常碰到的问题:不断变化的产品需求会不断要求更改 MySQL 表结构,gh-ost 通过一种影响小、可控制、可审计……

GH-OST:输出信息说明​

GH-OST:输出信息说明​

了解GH-OST输出 GH-OST会尽量让你知道自己在做什么,会输出一些关键详细信息,让你了解整个迁移过程。当然,你可以控制输出级别。 --verbose:常用,有用的输出,而不是一切。 --debug:输出所有一切。 当开始执行GH-OST时,初始输出行可能如下所示: 2016-05-19 17:57:04 INFO star……

MySQL InnoDB RR隔离级别下INSERT…SELECT对SELECT表加锁模型和死锁案列

MySQL InnoDB RR隔离级别下INSERT…SELECT对SELECT表加锁模型和死锁案列

最近有网友遇到了在RR隔离级别下insert A select B where B.COL=** 由于select表也就是B表引发的死锁的问题。分析死锁日志后,笔者进行模拟重现了这位网友遇到了2种场景并且在本文中进行详细的描述。 本文使用版本Percona 5.7.14修改版,能够打印出事务所有的行锁信息结构链(不包含隐含锁) 本文中的测试是在RR隔离级……

GH-OST:原子切换原理

GH-OST:原子切换原理

Github 开源的 GH-OST 工具也已经有几年了,用过 GH-OST 工具的就会知道,其最后也需要有一个 cut-over 的动作,就是原表跟新表的切换。作者提供了一个原子可靠的切换方式,并且写了三篇文章来阐述 cut-over 操作过程,其中还对比了 Facebook OSC 切换算法。 1. Solving the Facebook-OSC no……

MySQL performance_schema系列文章

MySQL performance_schema系列文章

一、导语 很久之前,当我还在尝试着系统地学习performance_schema的时候,通过在网上各种搜索资料进行学习,但很遗憾,学习的效果并不是很明显,很多标称类似 “深入浅出performance_schema” 的文章,基本上都是那种动不动就贴源码的风格,然后深入了之后却出不来了。对系统学习performance_schema的……