呼叫所有MSSQL服务器专家!
我目前正在进行一个项目,涉及一个具有以下布局的表:
[DBNODECLOSURES]节点
[ID]bigint主键标识不为空,
[ParentID]bigint不为空,
[childid]bigint不为空,
[深度]int不为空
这是一个用于存储父子关系的闭包表,当前具有以下索引:
[dbo].[dbnodeclosures]([parentid])上的[ix_dbnodeclosures_parentid]
[dbo].[dbnodeclosures]([childid])包含([depth],[parentid])
[dbo].[dbnodeclosures]([parentid],[childid])include([depth])上的[ix_dbnodeclosures_d parentid-childid]
对此表的查询通常涉及使用parentid查询所有子id,反之亦然。此表中的行只插入或删除,从不更新。我们目前有这项工作,有6亿行,性能仍然很好,但是我们即将进入一个迁移期,这个数字将超过12亿行,随着时间的推移,可能会增长到300多亿行。在6亿行中,包含索引的当前表在我们的sql服务器上占用了大约30gb的存储空间。
所以现在真正的问题是:
这个比例有多大?
查询性能会随着行数的增加而降低吗?
插入和删除性能会随着行数的增加而显著降低吗?
我一直在研究诸如表分区(可在所有版本的MSSQL Server 2016+上使用)和列存储索引之类的选项,但没有任何实际经验,也没有将MSSQL表扩展到数十亿行的实际经验。(是的,我们正在考虑对NoSQL进行大规模的转换,以获得它的扩展优势,但从开发成本的角度来看,这将是非常昂贵的)我已经看到其他公司(Nasdaq)能够获得成千上万的行,所以我认为这是可能的,我希望在这方面有经验的人能够提供一些见解在这些级别上,他们所看到的SQL Server的性能和可扩展性。
谢谢你的关心!
最佳答案
似乎是SQL Graph Database的可能应用程序
fwiw我们有一个更宽的表,在我们的生产系统中有几十亿行,运行得很好。
关于sql-server - 数十亿行表的Microsoft SQL Server扩展,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56465269/