数十亿行表的Microsoft SQL Server扩展

时间:2019-06-05 17:23:15

标签: sql-server database sql-server-2016

调用所有MSSQL服务器专家! 我目前正在从事一个涉及具有以下布局的表的项目:

[DbNodeClosures]

  • [Id] BIGINT主键标识不为空,

  • [ParentID] BIGINT NOT NULL,

  • [ChildID] BIGINT NOT NULL,

  • [深度] INT不为空

这是用于存储父子关系的关闭表,当前具有以下索引:

[IX_DbNodeClosures_ParentID]开启[dbo]。[DbNodeClosures]([ParentID])

[IX_DbNodeClosures_ChildID]开启[dbo]。[DbNodeClosures]([ChildID])包括([Depth],[ParentID])

[IX_DbNodeClosures_ParentID-ChildID]开启[dbo]。[DbNodeClosures]([ParentID],[ChildID])包括([深度])

查询此表通常涉及使用parentID查询所有子ID,反之亦然。该表中的行仅被插入或删除,从不更新。目前,我们有6亿行记录正在运行,但性能仍然非常出色,但是我们将进入一个迁移期,该数量将超过12亿行,随着时间的推移,可能会增长到30+十亿行。当前表(包含索引)有6亿行,在我们的SQL Server上大约需要30 GB的存储空间。

现在是真正的问题:

这种缩放效果如何?

查询性能会随着行数的增加而降低吗?

随着行数的增加,插入和删除性能会大大降低吗?

我一直在研究诸如表分区(在所有版本的MSSQL Server 2016+上可用)和ColumnStore索引之类的选项,但是他们对它们没有任何实际经验,也没有对扩展MSSQL表的真实经验到数十亿行。 (是的,我们正考虑从NOSQL的规模扩展中获得全面的转换,但是从开发成本的角度来看,这将是非常昂贵的)我已经看到其他人(纳斯达克)能够获得500亿行,所以我认为这是有可能的,我希望对此领域有经验的人可以就他们在这些级别的SQL Server的性能和扩展方面所见之处提供一些见解。 感谢您的任何想法!

1 个答案:

答案 0 :(得分:1)

看起来像是SQL Graph Database的可能应用

FWIW,我们的生产系统之一中有数十亿行的表格,并且运行良好。