2

我正在使用一个大型数据库(一些表 500000000+ 行)。每天应该替换 3-10 百万行,每次导入大约 100 万行(因此使用 CRON 每天 3-10 次)使用 LOAD DATA INFILE。问题是,在进行如此大的文件导入时,MySQL 占用了 80% 的 CPU,来自网站的所有常见查询变得非常缓慢或网站性能下降。站点在 Amazon 的 EC2 Windows 2008 服务器下运行。有谁知道如何在一个 EC2 实例中解决这个问题(不拆分数据库)谢谢。

4

2 回答 2

1

分发似乎是要走的路(这就是facebook做事的方式)

不知道你不这样做的理由是什么,预算限制?

其他可能的方法

  • 放弃使用窗户-窗户的限制
  • 设置mysql复制
  • 在通过 cron 导入期间,防止所有查询命中 master,反之亦然。导入完成后(比如设置两个标志文件,如果master标志存在,使用slave,如果slave标志文件存在,使用master,两者都不存在,那么两者都可以查询)
  • 考虑分区
  • 丢弃所有索引(承担后果)

很大程度上取决于您的数据库使用情况,如果不是关键任务,请进行非常适合的离线导入

于 2011-01-11T02:58:04.440 回答
1

一个快速而肮脏的 hack... 将源文件拆分为较小的负载,然后将其作为数据库加载操作进行 cron'ned 处理,每次加载之间有 5 分钟的休息时间?一次管理 1000 万条记录会耗尽许多服务器和数据库资源,从而导致崩溃。如果您有一个具有大量内存的大型服务器,则仅使用 50-100K 的负载可能不会太糟糕。

于 2011-01-11T00:04:55.367 回答