2016-04-21 40 views
0

我有一个MySQL-Server 5.5,每个表中有大约5.000.000条记录。生产中的MySQL变量innodb_file_per_table激活

现在我想激活变量“innodb_file_per_table = 1”。

这可能吗? 有没有这样做的风险?

原因是激活选项,是为了优化性能。

感谢和问候 克里斯

+0

可能没有性能增益。 –

回答

0

这是可能的。官方docs 中提到了所有优点和可能的缺点。另外,您应该知道只有在新表格中创建新表格,或者您可以重建现有表格以从共享表格区域移动。

+0

感谢您的快速回答。对于重建现有的表,我刚刚执行了每个表的下面的表格是否正确?还是需要其他步骤? ALTER TABLE table_name ENGINE = InnoDB; – hugi86

+0

改变就足够了。请注意,如果您打算使用ALTER,它会锁定您的桌面,因此您应该计划停机时间,或者您可以使用任何OSC工具:percona,facebook,open-ark等 – ravnur

+0

好的,但执行语句后,表格会自动解锁? – hugi86

1

innodb_file_per_table是一个动态变量 - 更改它可以安全地完成,甚至不需要重新启动服务器......但需要注意的是,您永远无法回收ibdata文件占用的磁盘空间。

使用启用设置重建的表将具有其自己的表空间文件,但ibdata1不能在没有转储的情况下收缩,然后删除ibdata1并重新初始化服务器,然后重新加载所有数据。

“性能”不一定是更改工作服务器上设置的有效理由。

+0

手段? ibdata文件将仍然具有相同的大小? – hugi86

+0

正确。 https://dev.mysql.com/doc/refman/5.6/en/innodb-resize-system-tablespace.html –