关于InnoDB表使用共享or独立表空间

数据库 jikk345 955℃ 0评论

mysqllogo

导读

关于InnoDB表使用共享or独立表空间的讨论。

问题由来

1、使用裸设备的情况:

裸设备的性能比使用XFS,ext4的IO性能要高很多, 而且现在裸设备可以直接是分区, 并且也支持DirectIO,
在使用上, 裸设备与XFS,ext4基本没有区别.
在mysql5.6.19和之前的版本,硬盘分区作为裸设备是支持的,最新的mysql5.6.27有Bug,暂时不支持裸设备.
BUG已经提交给Oracle, http://bugs.mysql.com/bug.php?id=79446
Oracle数据库很多经典案例都是推荐使用裸设备以便获得最大化的IO, MySQL数据库优化中不强调这个.

MySQL 的裸设备的经典配置如下:

sudo ls -l /dev/md2p1

brw-rw—- 1 root disk 259, 0 11月 30 00:21 /dev/md2p1

sudo mknod /var/lib/mysql/raw1 b 259 0
sudo chown mysql:mysql /var/lib/mysql/raw1
sudo chmod 0660 /var/lib/mysql/raw1

in /etc/mysql/my.cnf

innodb_data_home_dir = “/var/lib/mysql”
innodb_data_file_path = raw1:216463Mnewraw;
innodb_flush_method = O_DIRECT
innodb_file_per_table = 0

2、使用裸设备以后:带来的第2个优点是:flachcache的缓冲块大小可以提高到16k, 而不是默认的4k. 因为MySQL数据库的读写块的单位是16KB, 这样减少了flachecache mdata的数量4倍, 可以带来可观的性能提高. 并且flashcache 直接映射裸设备, 带来了性能提高, 减少了一次读写XFS索引块的IO.

3、使用裸设备以后,:减少了磁盘碎片. 我们知道碎片产生的原因有2个, 1个是XFS,ext4带来的, 1个是MYSQL内部数据块带来的. 使用裸设备以后, XFS,ext4这个因素就完全消除了, 减少了碎片的概率.

4、裸设备本身也支持MYSQL的日志ib_logdata0和ib_logdata1的存取. 这个方面, MySQL只需要简单的修改, 就可以把log数据也存放到裸设备上. 当把日志也存放到裸设备上以后, 实际MYSQL的底层就与数据库Oracle的经典配置完全类似, 可以带来非常大的性能提高.
并且使用裸设备以后, 就完全不用考虑XFS,ext4是4KB块, 日志是512B块的问题, 完全没有必要使用4K块日志(很多情况下会带来性能的降低).
本人测试日志使用裸设备以后, 对比使用XFS, ext4的情况, 完全消灭了读IO, 对应的分区上只有写IO, 性能提高很多.

转载请注明:清麟博客 » 关于InnoDB表使用共享or独立表空间

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址