MYSQL在一个表上创建索引,减慢或锁定第二个表上的性能

时间:2013-12-31 11:39:45

标签: mysql

我们每天都会通过创建新表来更新我们的网站。在构建它并创建索引时,我们重命名旧表和新表以交换它们。

序列如下

1. Create table (MyIsam)
2. Upload data
3. Create indexes
4. Rename current table to "data_old"
5. Rename new table to "data"

我们遇到的问题是在第3阶段,即在“新”表上创建索引。旧表的读取性能受到太大影响,以至于Web服务器平衡器认为存在故障并开始显示“网站正忙”

创建了8个索引,6个BTREE和2个FULLTEXT。完成后,表的数据长度为1.5Gb,索引长度为138Mb。

myisam_sort_buffer_size = 309Mb
key_buffer_size = 557Mb
myisam_max_sort_file_size = 60Gb

总体而言,我们会在创建这些指数时遭受大约15分钟的“停机时间”。

选项

是否有“多线程”操作,所以在新表上创建索引的操作不会影响原始表上的读取(select)性能?

是否可以调整mysql设置以减少创建索引所需的时间?

我们目前在没有多少用户在线的情况下在早期执行更新,但我们经常需要在白天进行更新,并希望避免我们目前的停机时间。

任何想法都赞赏!

0 个答案:

没有答案