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

标签:MySQL InnoDB存储引擎

MySQL InnoDB

使用innodb_ruby分析InnoDB内部结构

一、innodb_ruby介绍 如果你想了解MySQL InnoDB内部结构,不好意思,官方在5.7版本之前并没有什么好的工具。所以你只能自己写一个工具去分析表空间文件或使用别人开源的工具,比如innodb_ruby。在MySQL 5.7版本,官方加强了innochecksum工具,使之也可以简单分析表空间,比如查看页类型统计信息等。但跟Jeremy Col……继续阅读 »

彭东稳 6个月前 (04-19) 2638浏览 1评论 0个赞

MySQL InnoDB

MySQL InnoDB离线校验工具innochecksum使用

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

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

MySQL InnoDB

MySQL InnoDB故障恢复流程

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

彭东稳 1年前 (2017-07-06) 6605浏览 2评论 7个赞

MySQL InnoDB

MySQL InnoDB MVCC实现原理

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

彭东稳 1年前 (2017-07-06) 5760浏览 0评论 2个赞

MySQL InnoDB

MySQL InnoDB Buffer Pool

一、InnoDB缓冲池 1. 表空间编号 InnoDB存储引擎是使用表空间来存储页的,表空间又可以被分为系统表空间和独立表空间。为了方便管理,每个表空间都会有一个4字节的编号,值得注意的一点是,系统表空间的编号始终为0,InnoDB也会根据一定规则给其他独立表空间也编上号。 所以,当我们查看或修改某个页的数据的时候,实际上需要同时知道表空间的编号和该页的编号……继续阅读 »

彭东稳 1年前 (2017-05-25) 10057浏览 3评论 10个赞

MySQL InnoDB

MySQL InnoDB缓冲池预读

InnoDB在I/O的优化上有个比较重要的特性为预读,预读请求是一个i/o请求,它会异步地在缓冲池中预先回迁多个页面,预计很快就会需要这些页面,这些请求在一个范围内引入所有页面。InnoDB以64个page为一个extent,那么InnoDB的预读是以page为单位还是以extent? 这样就进入了下面的话题,InnoDB使用两种预读算法来提高I/O性能:线……继续阅读 »

彭东稳 1年前 (2017-05-24) 5769浏览 0评论 1个赞

MySQL InnoDB

MySQL InnoDB Monitor

 一、InnoDB Monitor 在MySQL处理死锁问题时,由于show engine innodb status输出来的死锁日志无任务事务上下文,并不能很好地诊断相关事务所持有的所有锁信息,包括:锁个数、锁类型等。于是,需要能查看到更详细的事务锁占用情况。 MySQL提供一套InnoDB监控机制,用于周期性(每15钞)输出InnoDB运行相关状态(In……继续阅读 »

彭东稳 1年前 (2017-05-24) 3348浏览 0评论 1个赞

MySQL InnoDB

MySQL InnoDB表压缩

一、InnoDB表压缩概述 InnoDB表压缩可以在创建表时开启,也可以使用ALTER关键字更改。压缩表能够使表中的数据以压缩格式存储,压缩能够显著提高原生性能和可伸缩性。压缩意味着在硬盘和内存之间传输的数据更小且占用相对少的内存及硬盘,对于辅助索引,这种压缩带来更加明显的好处,因为索引数据也被压缩了。这主要得益于InnoDB表压缩是针对页面压缩(不是行压缩……继续阅读 »

彭东稳 1年前 (2017-05-15) 3620浏览 0评论 1个赞

MySQL FAQ

MySQL表空间传输

在MySQL中如果要迁移一个表导另外一个服务器/环境中,常规的做法就是使用备份工具备份,比如mysqldump/mysqlpump/mydumper,然后拷贝备份到目标服务器或者环境导入。如果某一个表数据量很大,导出dump文件很大的情况下,使用导出导入工具其实会花费不少的时间。 怎么样提高效率呢,可以有一种想法就是直接拷贝数据文件到目标环境,当然在早期版本……继续阅读 »

彭东稳 1年前 (2017-04-26) 3901浏览 0评论 3个赞

MySQL InnoDB

MySQL InnoDB checkpoint

一、Checkpoint简介 我们知道缓冲池的设计目的为了协调CPU速度与磁盘速度的鸿沟。因此页的操作首先都是在缓冲池中完成的,如果一条DML语句,如Update或Delete改变了页中记录,那么此时页是脏的,即缓冲池中的页的版本要比磁盘的新。数据库需要将新版本的页从缓冲池刷新到磁盘。 若每次一个页发生变化,就将新页的版本刷新到磁盘,那么这个开销是非常大的。……继续阅读 »

彭东稳 1年前 (2017-04-25) 3414浏览 3评论 3个赞