【发布时间】:2011-08-22 01:59:45
【问题描述】:
我需要将一个大型数据集加载到生产数据库中。
需要分别上传 15 个文件并插入到表格中。 每个大约 500 Mb。
我有两个需要索引的 ID 列。 如果我加载带有索引的文件,上传大约需要 3 个小时。 如果我删除索引,加载数据本地 infile,然后重新添加索引,整个操作大约需要 30 分钟。
问题是,数据库响应能力在为新导入的数据编制索引时受到很大影响。有没有办法让索引以“低优先级”运行,以便其他查询仍然获得 95-100% 的速度,并且索引类型在后台运行?
我正在使用 Amazon RDS,因此我无法选择仅在不同的服务器上加载然后复制表格文件。
为此添加赏金,因为我仍然想看看是否有办法在对特定框进行索引时获得良好的性能。
【问题讨论】:
-
请为正在加载的表运行 SHOW CREATE TABLE tblname\G。我们需要看看这个表是什么存储引擎。请向我们展示 /etc/my.cnf 文件。
-
我目前正在使用myisam,但我也尝试过innodb。我愿意使用任何一个。同样,最大的问题是试图限制索引,而不是试图提高性能。
-
不清楚您执行此操作的频率,但您似乎暗示这是一次性的。出于好奇,大约 30 分钟的停机时间是什么问题?不能在低使用时段(夜间/午餐时间)执行吗?
-
数据加载需要每周至少发生一次,但有时每天一次。我不在乎它们是否需要 6 个小时,我只是想限制它们,这样它们就不会影响其余的查询。
标签: mysql indexing throttling