将SQL Server中的音频文件(mp3,wav)存储为BLOB是一个好主意吗?其中一个优点似乎是节省硬盘空间。这对可扩展性或性能有影响吗?
答案 0 :(得分:6)
不,这不是一个好主意:)可变大小的字段(例如TEXT和BLOB)会产生各种性能影响。更好的方法是将文件存储在磁盘上,并在DB表中维护对它们的引用。如今,硬盘空间非常便宜(特别是与CPU和I / O性能相比),它甚至不应该成为一个问题。
答案 1 :(得分:1)
我认为这很大程度上取决于您的应用程序的设计方式。如果您要经常检索音频文件(或更新它们),那么由于音频文件可能非常大,因此可能会严重影响性能。为什么不将它们放在共享网络位置而只是存储数据库中文件的路径?硬盘空间便宜,带宽和SQL性能不是。除非你有充分的理由将它们保存在数据库中(并且我认为不会节省硬盘空间),否则最好将它们存储在本地或共享路径上。
答案 2 :(得分:1)
如果您可以选择升级到SQL 2008(即如果您获得免费升级许可),那么FILESTREAM
是最佳选择 - 它会在列中添加“链接”,但会使用常规文件系统实际存储数据。
在SQL 2005或更早版本中,我不会这样做。我也看不出它是如何节省硬盘空间的;无论它是磁盘上的文件还是位于数据库列中的某个位置,5兆是5兆;后者只是让它变得更难,而其他人提到的可能会对您的整体数据库性能产生负面影响。我猜有一些小的文件系统开销,比如最小的簇大小,但对于大文件(尤其是音频),效果可以忽略不计。
答案 3 :(得分:1)
如果您使用的是Sql Server 2008,则可以使用filestream属性。 Sql Server将文件存储在文件系统上,但将其链接到varbinary列。
请查看以下链接:
http://www.aghausman.net/sql_server/configure-sql-server-2008-for-file-stream-2.html (断开链接 - 仍可通过https://web.archive.org/web/20120530062012/http://www.aghausman.net/sql_server/configure-sql-server-2008-for-file-stream-2.html上的互联网档案馆访问)