在数据库列中存储JSON-NVARCHAR(MAX),FileStream



我有一个表,其中一列中有几个标准字段和一个JSON文档。我们使用SQL Server 2017来存储所有内容,数据由使用Entity Framework 6的C#应用程序消耗。表本身可能会有数以万计的条目,并且这些条目(或者更确切地说,它们上的JSON列(必须每天更新。我正试图弄清楚使用什么数据类型才能获得最佳性能。

我读过这个:

SQL Server 2008 FILESTREAM性能

目前,JSON文档的文件大小在30-200KB之间。有可能超过256KB的大关,但目前超过1MB的概率非常低。这将指向NVARCHAR。此外,这里:

什么';存储JSON字符串的最佳SQL数据类型是什么?

人们建议将JSON存储为NVARCHAR(MAX(是可行的。

然而有两件事让我担心:

  1. 首先,随着时间的推移,会出现碎片化,写入程序太多(这是无论列大小,Filestream似乎都具有优势的领域之一(。我不确定这会对表演产生什么影响
  2. 其次,我不确定在数据库中存储这么多文本数据是否会因为大小而减慢速度?据我所知,FileStream的另一个优点是,无论磁盘上的文件大小如何,数据库大小成本都是恒定的,这有助于随着时间的推移保持性能。还是我错了

考虑到我的用例,你会选择什么?

这不仅仅是性能的问题,也是开发时间、知识和维护的问题。如果所有东西都已经在c#中使用实体框架了,为什么要使用更复杂的东西?我的方法是使用开发人员最满意的解决方案,直到出现性能瓶颈,然后进行基准测试。

将两种具有现实桌子大小的解决方案进行比较,可以让您真正了解是否值得进行任何调整。

最新更新