【发布时间】:2013-01-05 08:18:48
【问题描述】:
我正在设计一个新的 MySQL 数据库(使用 InnoDB 作为引擎),它将托管记录大量数据的表(每天大约 200 万条记录,保存 5 年的数据 = 大约 3 650 000 000行)。现在,显然将所有这些存储在一个表中并不是一个非常聪明的主意,所以这些几乎是我的选择:
- 在表上使用分区(在这种规模下这真的会带来多大的改进?)
- 生成一个新表以包含每个月的数据(因此,每个表大约有 60 000 000 行)
还需要注意的是,我将不得不进行某种多主复制(或集群)。
现在,我认为 选项 2 可能更好,因为它允许查询尽可能小的数据集(当用户指定要搜索的日期时),并且还将简化 5 年后的数据归档(只需移动整个表)。但是,使用选项 2 意味着我将不得不使用连接、联合,或者我必须运行多个单独的查询才能生成结果集(如果您需要按其他方式排序,则不首选后者日期)。
所以,我的问题是,除了使用联接之外,有没有一种方法可以真正将重点放在速度上,跨多个表并行运行查询?。我在想像 Google 这样的人,他们能够通过或多或少地做这类事情来达到他们的搜索速度。
谢谢!
【问题讨论】:
标签: mysql optimization