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

标签:MySQL InnoDB存储引擎

MySQL InnoDB

MySQL InnoDB恢复过程详解

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

彭东稳 4个月前 (07-06) 1042浏览 0评论 0个赞

MySQL InnoDB

MySQL InnoDB MVCC实现

数据多版本(MVCC)是MySQL实现高性能的一个主要的方式,通过对普通的SELECT不加锁,直接利用MVCC读取指版本的值,避免了对数据重复加锁的过程,今天我们就用最简单的方式,来分析下MVCC具体的原理,先解释几个概念: 隐藏列 在分析MVCC原理之前,先看下InnoDB中数据行的结构: 在InnoDB中,每一行都有2个隐藏列DATA_TRX_ID和D……继续阅读 »

彭东稳 4个月前 (07-06) 740浏览 0评论 0个赞

MySQL InnoDB

MySQL InnoDB缓冲池配置详解

一、InnoDB缓冲池 InnoDB维护一个称为缓冲池的内存存储区域 ,用于缓存内存中的数据和索引。了解InnoDB缓冲池的工作原理,并利用它来保存内存中经常访问的数据,这是MySQL调优的一个重要方面。有关InnoDB缓冲池如何工作的信息,请参阅InnoDB缓冲池LRU算法。 1.1 LRU(least recently used) InnoDB管理buf……继续阅读 »

彭东稳 5个月前 (05-25) 1922浏览 2评论 2个赞

MySQL InnoDB

MySQL InnoDB缓冲池预读

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

彭东稳 5个月前 (05-24) 975浏览 0评论 1个赞

MySQL InnoDB

MySQL InnoDB Monitor

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

彭东稳 5个月前 (05-24) 622浏览 0评论 0个赞

MySQL InnoDB

MySQL InnoDB表页面压缩

一、表压缩概述 表压缩可以在创建表时开启,压缩表能够使表中的数据以压缩格式存储,压缩能够显著提高原生性能和可伸缩性。压缩意味着在硬盘和内存之间传输的数据更小且占用相对少的内存及硬盘,对于辅助索引,这种压缩带来更加明显的好处,因为索引数据也被压缩了。压缩对于硬盘是SSD的存储设备尤为重要,因为它们相对普通的HDD硬盘比较贵且容量有限。 我们都知道,CPU和内存……继续阅读 »

彭东稳 5个月前 (05-15) 823浏览 0评论 0个赞

MySQL

MySQL内部临时表的使用

一、内部临时表使用 在某些情况下,服务器在处理语句时创建内部临时表,而用户无法直接控制临时表何时发生,完全有MySQL内部自行决定。 MySQL在以下几种情况会创建临时表: 1、UNION查询(MySQL 5.7起,执行UNION ALL不再产生临时表,除非需要额外排序。); 2、用到TEMPTABLE算法或者是UNION查询中的视图; 3、ORDER BY……继续阅读 »

彭东稳 6个月前 (04-26) 1075浏览 0评论 2个赞

MySQL FAQ

MySQL表空间传输

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

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

MySQL InnoDB

MySQL InnoDB checkpoint

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

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

MySQL InnoDB

MySQL InnoDB特性:两次写(Double Write)

一、经典Partial page write问题? 介绍double write之前我们有必要了解partial page write(部分页失效)问题。 InnoDB的Page Size一般是16KB,其数据校验也是针对这16KB来计算的,将数据写入到磁盘是以Page为单位进行操作的。我们知道,由于文件系统对一次大数据页(例如InnoDB的16KB)大多数……继续阅读 »

彭东稳 6个月前 (04-14) 1207浏览 0评论 0个赞

MySQL InnoDB

MySQL InnoDB Online DDL

一、Online DDL概述 MySQL DBA应该都知道,数据库操作里面,DDL操作(比如CREATE,DROP,ALTER等)代价是非常高的,特别是在单表上千万的情况下,加个索引或改个列类型,就有可能堵塞整个表的读写。 然后MySQL 5.6开始,大家期待的Online DDL出现了,可以实现修改表结构的同时,依然允许DML操作(select,inser……继续阅读 »

彭东稳 6个月前 (04-14) 1374浏览 0评论 3个赞