注册 登录
  • 欢迎访问"运维那点事",推荐使用Google浏览器访问,可以扫码关注本站的"微信公众号"。
  • 如果您觉得本站对你有帮助,那么可以扫码捐助以帮助本站更好地发展。

MySQL InnoDB插入意向锁

INSERT INTENTION LOCK,翻译为插入意向锁,其实准确来说应该是 INSERT INTENTION GAP LOCK,属于 GAP LOCK 子类。这个锁类型在老版本的 InnoDB 中并不存在,后来是为了优化插入性能而设计的。 在 INSERT 操作插入成功后,会在新插入的行上设置 index record lock。但,在插入行之前,IN……继续阅读 »

彭东稳 23小时前 52浏览 0评论 0个赞

MySQL事件调度器(event_scheduler)

一、事件介绍 事件调度器是定时触发执行的,在这个角度上也可以称作是”定时的触发器”。触发器只是针对某个表产生的事件执行一些语句,而事件调度器则是在某一个(间隔)时间执行特定的语句/存储过程。事件是由一个特定的线程来管理的,也就是所谓的”事件调度器”。启用事件调度器后,拥有SUPER权限的账户执行SHOW PRO……继续阅读 »

彭东稳 5个月前 (09-30) 1538浏览 0评论 0个赞

查看InnoDB表每个索引的高度?

我们知道InnoDB表是索引组织表,分为聚集索引和二级索引,但不管哪种索引,其结构都是B+树结构。由于InnoDB B+树结构高扇区特性,所以每个索引高度基本在3-4层之间,如果数据量比较大,页比较小,如4K,那么高度也是可能破4的。问题来了,以上说法都是我们根据理论知识计算得出的结果,那么在InnoDB中如何查看每个索引的高度呢?InnoDB也没有提供相应……继续阅读 »

彭东稳 7个月前 (08-01) 2682浏览 0评论 0个赞

堆表(HOT)和索引组织表(IOT)的区别

一、HOT和IOT的起源 堆组织表的存储速度因为不用考虑排序,所以存储速度会比较快。但是要查找符合某个条件的记录,就必须得读取全部的记录以便筛选。而这个时候为了加快查询速度,索引就出现了,索引是针对少量特定字段的值拿出来进行排序存储,并记录在表中的位置,而因为索引是有序的,所以就会很容易通过索引查询到具体的记录位置(普遍使用二分查找法),然后再根据记录位置直……继续阅读 »

彭东稳 7个月前 (08-01) 2000浏览 0评论 0个赞

有趣的MySQL pager命令

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

彭东稳 7个月前 (07-17) 2896浏览 0评论 0个赞

MySQL查询优化:Index Merge

一、为什么会有Index Merge? 我们的 where 中可能有多个条件(或者join)涉及到多个字段,它们之间进行 AND 或者 OR,那么此时就有可能会使用到 Index Merge 技术。Index Merge 技术如果简单的说,其实就是对多个索引分别进行条件扫描,然后将它们各自的结果进行集合运算(Intersect/Union)。 MySQL 5……继续阅读 »

彭东稳 7个月前 (07-13) 1812浏览 0评论 2个赞

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

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

彭东稳 7个月前 (07-13) 3657浏览 1评论 1个赞

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

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

彭东稳 7个月前 (07-10) 1537浏览 0评论 0个赞

使用pt-kill为MySQL保驾护航

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

彭东稳 8个月前 (07-06) 2781浏览 0评论 2个赞

MySQL查询优化:子查询物化

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

彭东稳 8个月前 (07-02) 1459浏览 0评论 1个赞