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

MySQL InnoDB离线校验工具innochecksum使用

innochecksum工具可以打印InnoDB文件的校验值,该工具读取InnoDB表空间文件,计算每个页面的校验值,将计算的校验值与存储的校验值进行比较,并报告指示损坏页面的不匹配。它最初是为了加速验证断电后表空间文件的完整性而开发的,也可以在文件复制后使用。由于校验值不匹配导致InnoDB故意关闭正在运行的服务器,因此最好使用此工具而不是等待生产服务器遇……继续阅读 »

彭东稳 2个月前 (11-23) 702浏览 0评论 0个赞

MySQL 5.7秒级增加VARCHAR类型

在生产环境中,可能经常要做的且教烦的一个事情就是做DDL操作。最常见的就是增加字段、修改字段类型了。增加字段就不说了,从MySQL 5.6开始就支持Online DDL了。但改变字段类型,比如从CHAR变为VARCHAR;修改字段类型,比如增加VARCHAR大小,这些在MySQL 5.7之前还是会锁表的。从MySQL 5.7开始就支持了对于tinyint、i……继续阅读 »

彭东稳 3个月前 (11-01) 741浏览 0评论 0个赞

MySQL InnoDB锁信息分析

下面主要分析一下InnoDB加锁的详细信息,主要用于分析一条语句的详细加锁结构以及加了什么锁。 记得先打开Innodb monitor中的锁详细信息输出,只在MySQL下有用,在MariaDB下不起作用。 mysql> set GLOBAL innodb_status_output=ON; mysql> set ……继续阅读 »

彭东稳 3个月前 (10-25) 706浏览 0评论 2个赞

MySQL InnoDB联合索引学习

联合索引是指对表上的多个列进行索引,其创建方法与单个索引一样,不同之处仅在于有多个索引列。例如,以下代码创建了一张t表,并且索引idx_a_b是联合索引,联合的列为(a,b)。 create table t(a int, b int, primary key(a), key idx_a_b(a,b)) engine=innodb……继续阅读 »

彭东稳 4个月前 (09-11) 943浏览 0评论 1个赞

MySQL InnoDB磁盘I/O优化

如果你遵循数据库设计和调优技术的最佳做法,但由于磁盘I/O活动较大,你的数据库仍然很慢,请考虑这些磁盘I/O优化。如果top工具显示你的CPU使用率百分比低于70%,则你的工作负载可能是磁盘导致的。几种优化方式如下: 增加缓冲池大小 当表数据缓存在InnoDB缓冲池中时,可以通过查询重复访问,而不需要任何磁盘I/O。使用innodb_buffer_poo……继续阅读 »

彭东稳 5个月前 (09-04) 1428浏览 0评论 1个赞

MySQL索引原理及SQL优化

MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少……继续阅读 »

彭东稳 5个月前 (08-28) 1347浏览 0评论 5个赞

MySQL InnoDB故障恢复流程

InnoDB如果发生意外宕机了,数据会丢么?对于这个问题,稍微了解一点MySQL知识的人,都会斩钉截铁的回答:不会!为什么?他们也会毫不犹豫的说:因为有重做日志(redo log),数据可以通过redo log进行恢复。回答得很好,那么InnoDB怎样通过redo log进行数据的恢复的,具体的流程是怎样的?估计能说清楚这个问题的人剩的不多了,更深入一点:除……继续阅读 »

彭东稳 7个月前 (07-06) 2113浏览 2评论 5个赞

MySQL InnoDB MVCC实现

数据多版本(MVCC)是MySQL实现高性能的一个主要的方式,InnoDB为了实现多版本的一致读,采用的是基于回滚段的协议。通过对普通的SELECT不加锁,直接利用MVCC读取指版本的值,避免了对数据重复加锁的过程,今天我们就用最简单的方式,来分析下MVCC具体的原理,先解释几个概念: 一、行结构 InnoDB表数据的组织方式为主键聚簇索引。由于采用索引组织……继续阅读 »

彭东稳 7个月前 (07-06) 1647浏览 0评论 1个赞

MySQL 5.7 InnoDB COUNT(*)优化

在MySQL 5.7版本中,InnoDB实现了新的handler的records接口函数,当你需要表上的精确记录个数时,会直接调用该函数进行计算。 使用 实际上records接口函数是在优化阶段调用的,在满足一定条件时,直接去计算行级计数。其explain出来的结果相比老版本也有所不同,这里我们使用sysbench的sbtest表来进行测试,共200万行数据……继续阅读 »

彭东稳 7个月前 (06-27) 1639浏览 0评论 2个赞

MySQL InnoDB聚簇及辅助索引

一、B+树索引 索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。如果没有索引,那么你可能需要把所有单词看一遍才能找到你想要的,如果我想找到m开头的单词呢?或者ze开头的单词呢?是不是觉得如果没有索引,这个事情根本无法完成? 我们都知道CPU是很快的,磁盘是很慢的,……继续阅读 »

彭东稳 8个月前 (05-31) 2288浏览 0评论 4个赞

MySQL死锁问题分析

线上某服务时不时报出如下异常(大约一天二十多次):“Deadlock found when trying to get lock;”。 Oh, My God! 是死锁问题。尽管报错不多,对性能目前看来也无太大影响,但还是需要解决,保不齐哪天成为性能瓶颈。为了更系统的分析问题,本文将从死锁检测、索引隔离级别与锁的关系、死锁成因、问题定位这五个方面来展开讨论。 ……继续阅读 »

彭东稳 8个月前 (05-27) 2013浏览 0评论 1个赞