小编Moh*_*min的帖子

总计数十亿行和每天数百万行插入:哪种数据库系统最适合

我们开发了一个数据量非常大但数据结构非常简单的系统。我们只有cellXcellYtimeStampvalue列。

操作是:

  • 每天插入455+ 千
  • 使用范围过滤器查询cellX,cellYtimeStamp
  • 查询不需要立即返回,我们可以在请求的数据准备好时通知用户。

因为数据太大,查询需要索引,所以采用了这个方案:

  1. 使用 SQL Server。
  2. 聚集在指数cellXcellYtimeStamp
  3. 每年都有单独的表,因此表中的总行数保持在限制范围内(~1.66 亿)。
  4. 使用自定义格式timeStamp。跳过年份,只保留月份、日期和小时。我们能够将其保持在 16 位整数内。
  5. 在每个年份表上使用分区
  6. 一次插入一天的数据。在插入数据时使用分区切换来保持数据库处于活动状态。

到目前为止,这一直运作良好。虽然我们在数据准备好后通知用户,但只要查询合理,延迟不会超过几秒。
但最近我们有机会获得更精确的数据,数据量增加了68 倍!。因此,现在我们有:

  • 每天插入30 多万行。
  • 在一个表中存储110 亿行一年。这可以通过制作季度(27 亿)或每月(10 亿)表来减少。

这可能是我们在一两年内能够收到更精确的数据。因此,数据量可能会再次显着增加。

问题是,我们使用的这个方案会持续吗?或者我们应该迁移到另一个方案,可能是另一个数据库系统离开SQL Server?


编辑

这三个维列cellXcellYtimeStamp在本质上非常有规律。您可以通过f(x) = …

performance index sql-server partitioning

5
推荐指数
1
解决办法
1854
查看次数

标签 统计

index ×1

partitioning ×1

performance ×1

sql-server ×1