何时使用外部文件或varbinary列?

时间:2018-04-23 21:07:09

标签: sql sql-server asp.net-web-api

我需要在服务器上存储二进制数据 - 每个项目大约 2K 。我之前从未在sql server中使用过varbinary类型。我正在考虑两种选择:

  • 将二进制数据存储在文件中,并在表中放置文件的路径 柱
  • 将二进制数据作为varbinary存储在表中

我意识到在第一个选项中,数据库上的负载是最小的。但是,需要考虑文件IO。

与DB交互的应用程序是.NET RESTFull WebAPI(c#)。目标表中的总行数为4-5千。

在这种情况下,最佳做法是什么?

1 个答案:

答案 0 :(得分:5)

使用varbinary并将其存储在数据库中更简单。简单的SQL语句将检索和存储数据。如果你有一个没有要求的应用程序,行数很少(行数少于100k),我会使用这种策略。

现在,如果你真的进入了性能,你可以在其中花费(更多)编程工作。您可以将二进制数据存储为文件系统中的文件,但是您会发现一些问题:

  • 保存/检索文件的额外逻辑。
  • 使用唯一名称命名文件。
  • 目录数量限制。
  • 应用程序可以在多个服务器中运行。这些文件需要从其中任何一个获得。也就是说,您需要一个网络文件系统。
  • 交易不一致。如果保存数据库行会发生什么,但文件未保存?
  • 需要不断检查文件系统分配,以避免磁盘空间不足。
  • 你说出来......

当您想要优化时,使用文件是值得的,但是在开发过程中以及在支持和维护期间,它需要做更多的工作。