我正在使用大型数据库(一些表500000000行) . 每天应使用LOAD DATA INFILE替换3-10百万行,每次导入大约100万行(使用CRON每天3-10次) . 问题是,在进行如此大的文件导入时,MySQL会占用80%的CPU,并且所有来自网站的常见查询变得非常慢或网站性能下降 . 站点在Amazon的EC2 Windows 2008服务器下运行 . 有谁知道如何在一个EC2实例中解决这个问题(没有拆分数据库)谢谢 .
一个快速而肮脏的黑客......如何将源文件拆分成较小的负载,然后将其作为数据库加载操作,并在每次加载之间间隔5分钟?一次管理1000万条记录将耗尽许多服务器和数据库资源,从而导致崩溃 . 如果你有一个有大量内存的大型服务器,使用只有50-100K的负载可能不会太糟糕 .
发行似乎是要走的路(这就是facebook做事的方式)
不确定你不这样做的理由是什么,预算限制?
其他可能的方法
discard use of windows - limitation of windows
设置mysql复制在通过cron导入期间
,防止所有查询命中为master,而vs . 一旦导入完成(类似设置两个标志文件,如果存在master标志,使用slave,如果slave标志文件存在,使用master,两者都不存在,则两者都可以查询)
考虑partition?
丢弃所有索引(承担后果)
很大程度上取决于您的数据库使用情况,如果不是关键任务,请执行非常合适的离线导入
2 回答
一个快速而肮脏的黑客......如何将源文件拆分成较小的负载,然后将其作为数据库加载操作,并在每次加载之间间隔5分钟?一次管理1000万条记录将耗尽许多服务器和数据库资源,从而导致崩溃 . 如果你有一个有大量内存的大型服务器,使用只有50-100K的负载可能不会太糟糕 .
发行似乎是要走的路(这就是facebook做事的方式)
不确定你不这样做的理由是什么,预算限制?
其他可能的方法
discard use of windows - limitation of windows
设置mysql复制
在通过cron导入期间
,防止所有查询命中为master,而vs . 一旦导入完成(类似设置两个标志文件,如果存在master标志,使用slave,如果slave标志文件存在,使用master,两者都不存在,则两者都可以查询)
考虑partition?
丢弃所有索引(承担后果)
很大程度上取决于您的数据库使用情况,如果不是关键任务,请执行非常合适的离线导入