my.cnf:提高在大型MySQL表中添加新列和索引的速度

时间:2010-04-23 14:29:28

标签: mysql

我有一个大表(> 1000万行),我正在添加新的列和索引。

这需要越来越长的时间来完成。

我有一台功能强大的服务器,可以使用16GB内存。

my.cnf中为了加快这个过程而增加的最佳设置是什么?

3 个答案:

答案 0 :(得分:0)

使用maatkit的调音入门。它会查看您的统计数据,并为您提供有关需要更改的设置的建议。

但最重要的是,您不应该更改架构或索引。正如您所注意到的那样,随着您变得越来越大,这种方法将不会持久。所以也许再看看你的设计。

您还可以投入更多硬件。听起来你需要一个包含大量磁盘的磁盘阵列。

答案 1 :(得分:0)

如果使用Innodb引擎,请在my.cnf中设置innodb_buffer_pool_size = 12000M。这会将12G分配给MySQL以缓存您的数据。如果您的机器专用于MySQL,您可能会高达14G。

答案 2 :(得分:0)

在如此大的桌子上你应该使用基于SSD的RAID partitiong。 并使用

innodb_flush_method=O_DIRECT

您应该提高磁盘子系统的性能。你有更多的iops而不是更好的数据库速度。