• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!
MySQL一次数据插入故障记录

MySQL一次数据插入故障记录

某天突然收到报警,数据库大量事务等待,进到数据库后发线大量的插入操作被阻塞,且都是同一个表的。 通过 show engine innodb status 发现插入操作都是在等待索引 idx_create_time(create_time) 的 insert intention lock(跟 gap 锁互斥),由于某些原因数据库是 RR 隔离级别。 ……

使用O_DIRECT/O_DIRECT_NO_FSYNC来提升MySQL性能

使用O_DIRECT/O_DIRECT_NO_FSYNC来提升MySQL性能

fsync()、fdatasync()、sync() 是什么? 首先它们是系统调用。 fsync(int fd) 系统调用把打开的文件描述符 fd 相关的所有缓冲元数据和数据都刷新到磁盘上(non-volatile storage,非易失性存储),等待写磁盘操作结束,然后返回。 fdatasync(int fd) 类似 fsync,但不 flush 元数据……

MySQL优化器对order by limit的错误处理分析

MySQL优化器对order by limit的错误处理分析

网上有很多案例是关于 order by limit 选择错误索引的文章。但每个人遇到的情况可能不太相同,有些在新版本的 MySQL 下已经修复了,有些是优化器估计一时半会处理不了的。 案例 MySQL order by limit 走错索引(range->indexscan) MySQL · 捉虫动态 · order by limit 造成优化器选择索……

MySQL 5.7基于GTID的多源复制

MySQL 5.7基于GTID的多源复制

我们知道,如果我们想把多个 MySQL Master 数据汇集到同一个实例,可以选择 MySQL 5.7 提供的多源复制,就是建立多个复制通道,每个通道分别 change master 到不同的实例即可。但这里对于复制方式可以基于 position 模式,或 gitd 模式。这里并不是介绍一些关于复制的基础知识,对于 position 模式,就不说了,也比较……

MySQL诡异的更新操作

MySQL诡异的更新操作

这几天线上出现一个诡异的更新问题,看下面这个测试案例,主看看表结构及更新结果。 mysql> select * from t1; +------+----------------------+ | id | c | +------+----------------------……

MySQL复制对于临时表的处理

MySQL复制对于临时表的处理

在跟网友讨论 inception 这个工具的回滚功能设计时,知道了它会根据 binlog 中的 query event 带的 thread id 来定位此次会话所执行的 SQL 语句有哪些,这是一个事务,当然定位回滚数据还需要 binlog position。而在 MySQL 中对于,如果你的 binlog 模式为 statement 格式,那么所有的 ev……

如果你将innodb_open_files设置为高于open_files_limit会发生什么?

如果你将innodb_open_files设置为高于open_files_limit会发生什么?

MySQL配置变量的设置对数据库系统的性能有重要影响,有时候预测一个变量如何影响其他变量的这个问题可能有点棘手,特别是在处理我将在本文中描述的案例时,结果不是很直观。所以在这里,我们将看看当你将innodb_open_files设置为高于open_files_limit时会发生什么? 我们可以使用以下命令设置MySQL中的最大打开文件数: ……

MySQL InnoDB插入意向锁

MySQL InnoDB插入意向锁

INSERT INTENTION LOCK,翻译为插入意向锁,锁类型为 LOCK_INSERT_INTENTION,其实准确来说应该是 INSERT INTENTION GAP LOCK,属于 GAP LOCK 子类。这个锁类型在老版本的 InnoDB 中并不存在,后来是为了优化插入性能而设计的。 INSERT INTENTION LOCK 在官方文档中的说……

Codis 3集群搭建详解

Codis 3集群搭建详解

一、Codis 3介绍 对于Redis集群方案有好多种,基本常用的就是twemproxy,codis、redis cluster这三种解决方案,本人有幸工作中都大量使用过,各有利有弊,下面这篇文章详解讲解一下豌豆尖的Codis 3。由于业务中还使用有Codis 2,所以对于Codis 2也写了一篇文章Codis 2集群搭建。Codis总体来说还算不错,仅供大……

MySQL RR隔离级别死锁问题剖析

MySQL RR隔离级别死锁问题剖析

本案例在RR隔离级别下,模拟数据如下: CREATE TABLE `ty` ( `id` int(11) NOT NULL AUTO_INCREMENT, `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, PRIMARY KEY (`id`), ……

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

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

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

堆表(HOT)和索引组织表(IOT)优缺点

堆表(HOT)和索引组织表(IOT)优缺点

一、堆表和索引组织表 NOTE 堆表也可以称之为 HOT,索引组织表也可以称之为 IOT,下面没有特别说明,两者都是一个意思。 堆(heap)组织表数据行在堆中存储,没有任何特定顺序,向一个全新的没有做过更新和删除的堆中插入一行时候,总是 append 到堆表文件的最后一页当中。因为不用考虑排序,所以插入速度会比较快。 但是要查找符合某个条件的记录,就必须得……