首页 存档 技术 查看内容

讨论|关于InnoDB表使用共享or独立表空间 导读 问题由来 我的看法

2018-3-30 13:00 |来自: 互联网 284 0

摘要: 导读 关于InnoDB表使用共享or独立表空间的讨论。 问题由来 本文源自于我早前的一个分享“比较全面的MySQL优化参考(下篇)”,有位网友(留言署名 郭忠明)提出了不同看法,他认为在一些场景下使用共享表空间有很大 ...

导读

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

问题由来

本文源自于我早前的一个分享“比较全面的MySQL优化参考(下篇)”,有位网友(留言署名 郭忠明)提出了不同看法,他认为在一些场景下使用共享表空间有很大优势。下面是这位网友的观点:

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, 性能提高很多.

我的看法

对这位朋友提出的观点我以前确实没有关注和测试过,因此非常感兴趣,想知道到底对性能提高有多少帮助,和对方联系过,但一直未收到他的回复(如有认识的朋友麻烦跟他说下哈)。

站在运维规范的角度上,我还是建议使用独立表空间,在对实例进行日常管理,备份、恢复等方面的需求处理起来会方便很多。

本文转载自:微信公众账号 - MySQL中文网,版权归原作者所有!

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部