MYSQL 随着时间的推移打破大量数据的最佳方式?

MYSQL Best way to break huge data over time?

我目前正在设计一个系统来监督我需要为它们保留日志和数据的一些设备。 每 15 秒从每台设备接收和存储数据。 现在我有一些设计数据库模式的经验,但以前没有这种规模。

将有 2 个 table。 一个包含设备信息,另一个包含统计信息。 问题是,如果我们有 5.000 台设备,那么我们一天会讨论将近 2500 万个结果。几周后 table 就会变得足够大。

现在大部分时间我都需要 运行 查询有关过去一天的信息 所以我想以某种方式将这一切分解成更多 tables.

一直有一个 运行ning 并更新它,并在每周结束时说将所有数据移动到另一个数据并保留在那里,以防我需要 运行 一些查询旧数据。

现在我应该坚持使用 InnoDB 吗?我将使用的唯一外键仅用于统计信息中的设备 ID table。

谢谢

如果你一般只想看过去一天的数据,那么我的建议是按天对数据进行分区。您可以详细了解 MySQL 分区 here

根据查询,您还需要日期和设备的索引。每天有 2880 万行,许多查询应该在合理的时间内完成。

分区的一个好处是它们可以被删除和归档,而对数据库性能的影响最小。

顺便说一句,每 15 秒插入 5,000 次是 333 inserts/second。您需要确保您的硬件足以应对此交易量。