0
我在20个表中有大约1000万行数据,我每个月处理一次。MySQL - 当我切换模式(数据库)时如何避免高负载?
我通过将这些表复制到新的模式(数据库)然后进行更改来完成此操作,因此更新不会针对正在查询的表运行。
为了使新的数据还活着,我曾尝试:
- 改变多数民众赞成编码到应用程序的数据库名称,以指向新的数据
- 运行的大RENAME TABLE语句,增加了一个前缀,例如OLD到活动表并将新表移动到活动数据库中
使用这两种方法时,服务器负载从大约0.1变为大于50,然后才逐渐恢复正常。如果可能的话,我想避免这种情况。
查询缓存关闭,我试过FLUSH TABLES并在更改后立即重新启动MySQL。
数据只从我的网站读取(未更新),所以我猜可能是Linux(我们使用RHEL5.3)缓冲5GB的数据,并不得不重新缓冲新数据。
有没有人对如何避免负载增加有什么建议?
谢谢 - 我已经尝试将一部分流量重定向到新表以预热缓存 - 需要一点实验,但它看起来很有希望。 – Richard 2009-07-15 13:49:23