首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL --如何在切换模式(数据库)时避免高负载?

MySQL --如何在切换模式(数据库)时避免高负载?
EN

Stack Overflow用户
提问于 2009-07-09 10:29:15
回答 1查看 126关注 0票数 0

我在20个表中有大约1000万行数据,我每月处理一次。

为此,我将这些表复制到一个新的模式(数据库)中,然后进行更改,这样更新就不会针对被查询的表运行。

为了使新的数据成为现实,我尝试了:

  1. 更改应用程序中编码的数据库名,以指向运行一个大型重命名表语句的新数据
  2. ,该语句向活动表添加前缀,例如旧表,并将新表移动到活动数据库

中。

使用这两种方法,服务器负载从大约0.1增加到50以上,然后逐渐恢复正常。如果可能的话,我想避免这种情况。

查询缓存被关闭,我已经尝试刷新表并在更改后立即重新启动MySQL。

数据只从我的站点读取(而不是更新),所以我想可能是Linux (我们使用read 5.3)缓冲了5GB的数据,并且不得不重新缓冲新的数据。

有没有人对如何避免增加的负荷有任何建议?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-07-09 10:34:47

您所看到的负载的增加可能是因为MySQL用于提高性能的所有缓存都将包含特定于旧表的数据,在清除这些数据并将其替换为新表中的数据之前,需要进行许多查询。

我建议您对新表运行一些典型的查询,以便在应用程序逻辑切换之前“预热”缓存。您还可以实现一种方案,在为所有请求进行切换之前,您可以将一小部分流量重定向到新表。

不要在MySQL中重命名任何表。会把你的藏身处搞得更糟。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1103087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档