【发布时间】:2011-06-14 07:05:21
【问题描述】:
我有一个 MySql 数据库。我有很多记录(大约 4,000,000,000 行),我想处理它们以减少它们(减少到大约 1,000,000,000 行)。
假设我有以下表格:
表 RawData:我每秒有超过 5000 行要插入到 RawData
表 ProcessedData :此表是在 RawData 中插入的行的已处理(聚合)存储。 最少行数 > 20,000,000
-
表ProcessedDataDetail:我写了表ProcessedData(聚合的数据)的详细信息
用户希望在 ProcessedData 表中查看和搜索需要加入超过 8 个其他表的表。 插入 RawData 并在 ProcessedData 中搜索(ProcessedData INNER JOIN ProcessedDataDetail INNER JOIN ...)非常慢。我使用了很多索引。假设我的数据长度是 1G,但我的索引长度是 4G :)。 (我想利用这些索引,它们使我的过程变慢)
我怎样才能提高这个过程的速度?
我想我需要一个来自 ProcessedData 的影子表,将其命名为 ProcessedDataShadow。然后处理 RawData 并将它们与 ProcessedDataShadow 聚合,然后将结果插入 ProcessedDataShadow 和 ProcessedData。你有什么想法?
(我正在用C++开发项目)
提前谢谢你。
【问题讨论】:
标签: mysql database mysql-management database-optimization