InnoDB

  • InnoDB Plugin新特性:压缩表

    ·

    Plugin的一个重要的特性就是增加了压缩存储。对于数据中有很多Long column(包括TEXT BLOB或者大VARCHAR)的场景能够大幅节约空间,并提升效率。

    1. 谁需要压缩?

    在InnoDB中,是以16K的页(Page)为基本的存储单位的。我们知道,InnoDB是的数据是在Clustered index中存储的,在Secondary index中仅存储对应数据的PK。Clustered index和Secondary index都是B-Tree结构的,所以对InnoDB数据页和索引页的压缩很大程度上就是对B-Tree节点页的压缩

    在InnoDB中,除了B-Tree节点页,还有一类数据页(Page),称为“overflow page”。当需要存储Long column时,如果当前页能够完全存储全部字段时,则存储在当前页中;如果当前页不足以存储全部,则InnoDB选择最长的字段,将其存储到一个单独的页中,我们称这样的页为“overflow page”,而原数据页仅仅需存储一个20Bytes的指针。参考下图:

    InnoDB_overflow_page

    所以InnoDB除了有上面的B-Tree页外,InnoDB还存储overflow页。事实上,需要压缩的数据页也就是这两类,InnoDB为了获得更好的效率,针对这两类数据页的压缩是使用不同的策略的。

    [……]

    Read more

  • InnoDB Plugin文件格式(概述)

    ·

    本文将介绍InnoDB Plugin数据表格式的基本概念。

    1. 配置参数innodb_file_format

    这是一个很容易混淆的概念。目前,在InnoDB Plugin(1.0.6)配置文件中innodb_file_format支持两种:Antelope/ˈæntɪləʊp/、Barracuda/ˌbærəˈkjuːdə/。他们分别是两种文件格式的代号,在未来版本中,InnoDB将继续延续这种代号机制,它们会是Antelope, Barracuda, Cheetah, Dragon, Elk, Fox等等。

    Antelope_Barracuda

    [……]

    Read more

  • InnoDB Double write

    ·

    记得刚开始看InnoDB文档的时候,Double Write一节(其实只有一小段)就让我很困惑。无奈当时内力太浅,纠缠了很久也没弄明白。时隔几个月,重新来整理一下。

    涉及到的概念:Buffer Pool简称BP,Dirty PageLog fileFlushinnodb tablespace

    1. 什么是Double Write

    在InnoDB将BP中的Dirty Page刷(flush)到磁盘上时,首先会将Page刷到InnoDB tablespace的一个区域中,我们称该区域为Double write Buffer。在向Double write Buffer写入成功后,再择机将数据拷贝到正在的数据文件对应的位置。

    咋一看,这个过程有些多余[……]

    Read more

  • InnoDB Hot Backup介绍(下)

    ·

    作者:mail
    来自:supu@TaobaoDBA 2009年10月12日星期一
    摘要:本文将较为详细的介绍InnoDB Hot Backup(后简称IHB)使用。IHB是Innobase下的一个商用备份软件,可以实现在线备份InnoDB数据表,这里的“在线备份”是指:在备份的同时不阻塞其他连接的读、请求。(本文提供PDF版本下载:点击下载

    [……]

    Read more

  • InnoDB Hot Backup介绍(上)

    ·

    作者:mail
    来自:supu@TaobaoDBA 2009年10月12日星期一
    摘要:本文将较为详细的介绍InnoDB Hot Backup(后简称IHB)使用。IHB是Innobase下的一个商用备份软件,可以实现在线备份InnoDB数据表,这里的“在线备份”是指:在备份的同时不阻塞其他连接的读、请求。(本文提供PDF版本下载:点击下载

    [……]

    Read more

  • InnoDB之Dirty page、Redo log

    ·

    在InnoDB中,buffer pool里面的dirty page一方面可以加快数据处理速度,同时也会造成数据的不一致(RAM vs DISK)。本文介绍了dirty page是如何产生,以及InnoDB如何利用redo log如何消除dirty page产生的数据不一致。

    1. 当事务(Transaction)需要修改某条记录(row)时,InnoDB需要将该数据所在的page从disk读到buffer pool中,事务提交后,InnoDB修改page中的记录(row)。这时buffer pool中的page就已经和disk中的不一样了,我们称buffer pool中的page为dirty page。Dirty page等待flush到disk上。
      dirty_pages
      UTF8_EXCER[……]

    Read more