八 04 InnoDB主键设计 发布时间:2010 年 8 月 4 日 发布者: OurMySQL 众所周知,InnoDB是clustered-index table,因此对于InnoDB而言,主键具有特殊意义。可以通过主键直接定位到对应的某一数据行记录的物理位置,主键索引指向对应行记录,其他索引则都指向主键索引;因此,可以这么说,InnoDB其实就是一个 B-树索引,这棵B-树的索引就是主键,它的值则是对应的行记录。 继续阅读全文 →
四 13 InnoDB Double write 发布时间:2010 年 4 月 13 日 发布者: OurMySQL 在InnoDB将BP中的Dirty Page刷(flush)到磁盘上时,首先会将Page刷到InnoDB tablespace的一个区域中,我们称该区域为Double write Buffer。在向Double write Buffer写入成功后,再择机将数据拷贝到正在的数据文件对应的位置。 继续阅读全文 →
三 09 Innodb 表和索引结构 发布时间:2010 年 3 月 9 日 发布者: OurMySQL 因为Innodb表的数据是依赖于聚集索引顺序存放,同时聚集索引和数据一块存储,普通索引也需要存放一份聚集索引。所以对于聚集索引的设计尽量按顺序写入,必免数据分页,行迁移等对性能影响的现象。另外聚集索引要设计的尽可能短。从设计上必须锁的时间,大量随机IO的出现。 继续阅读全文 →
三 09 InnoDB线程并发检查机制 发布时间:2010 年 3 月 9 日 发布者: OurMySQL InnoDB在接受MySQL线程调用时,有一个并发线程的检查机制,通过innodb_thread_concurrency参数进行控制。如果参数设置大于0,则表示检查机制开启,允许进入的线程数就是参数的值。等于0则禁用并发检查。 继续阅读全文 →
十二 20 Innodb如何使用内存 发布时间:2009 年 12 月 20 日 发布者: OurMySQL 最近经常被问起Innodb是如何使用内存的。该问题早已被原MySQL公司的Vadim论证过。我这里译一下他的文章供大家参考。 继续阅读全文 →
十二 20 Innodb文件表空间结构 发布时间:2009 年 12 月 20 日 发布者: OurMySQL 表空间是在配置文件中定义的几个文件简单的耦合起来,在使用中互不可少(少一个就面临DB完蛋的危险)。对于共享表空间无法确定表所在的表空间上。 继续阅读全文 →
十二 12 InnoDB的”替代品”:Percona XtraDB 发布时间:2009 年 12 月 12 日 发布者: OurMySQL XtraDB是Percona Team在InnoDB的基础上开发出来的一个更加强大的存储引擎,它百分百的兼容InnoDB,我们可以用XtraDB来替代为MySQL的发展做出历史性贡献的InnoDB,新的XtraDB引擎将具有更加强大的性能优势,以及良好的扩展性和一些新特性。 继续阅读全文 →
九 25 Innodb表空间page size的选择 发布时间:2009 年 9 月 25 日 发布者: OurMySQL 从空间和内存利用的角度来讲,page size越大越好。但是从checkpoint的角度来讲恰恰相反,page size越小,性能越好(上次演讲的时候我介绍过原理)。所以最后选择多大的page size可以根据实际的业务测试而定。 继续阅读全文 →
九 03 MySQL InnoDB性能调整的一点实践 发布时间:2009 年 9 月 3 日 发布者: OurMySQL 数据库服务器启动以后,运行不太正常。表现出来的现象是: 1、操作系统内存Disk Cache使用了2.7GB 2、操作系统swap空间使用了200MB左右,一直不停进行swap in/swap out 3、CPU的IO Wait偏高,平均在10%以上 继续阅读全文 →
八 18 随机主键对InnoDB插入性能的影响 发布时间:2009 年 8 月 18 日 发布者: OurMySQL 孔子说得好,“学而不思则罔,思而不学则殆”。看书看多了不去想不去做对比,很快脑子就会一片混乱。这篇blog稍微介绍下随机主键对InnoDB插入性能的影响。 InnoDB引擎的行结构相当复杂(compact、redundant、Barracuda)。为了弄明白这一个细节,我翻了很多遍官方手册。后来又对比着看了很多本书,发现他们自相矛盾,无奈之下,只能从简单的开始测起。 继续阅读全文 →