[英]file stream increases data base size even though it stores on file system
我们知道文件流是一种用于在文件系统中存储大于1 mb的文件的机制,目的是提高流传输性能
让我们假设我们有一个1.5 gb的文件a,并且我们有以下具有文件流属性的表文档
create database TryFileStream
ALTER DATABASE TryFileStream
ADD FILEGROUP [Common_Filestream] CONTAINS FILESTREAM
ALTER DATABASE TryFileStream
ADD FILE
(
NAME = [Common_FileStream_1],
FILENAME = 'C:\TryFileStream\FileStream1',
MAXSIZE = UNLIMITED
)
TO FILEGROUP [Common_Filestream];
Create Table Documents
(
[ID] UNIQUEIDENTIFIER Unique ROWGUIDCOL NOT NULL,
content VARBINARY(MAX) FILESTREAM
)
当然,当我们在表文档中保存1.5 GB文件时,文件流路径
C:\TryFileStream\FileStream1 will be increased by 1.5 gb in size
但是令我惊讶的是,保存该文件还会使数据库大小增加1.5 gb
因此,如果数据库大小继续增加并且无法进行备份操作,那么使用文件流的好处是什么?
我们获得的唯一好处是为用户提供了快速的数据流传输,因为文件存储在文件系统中,还有其他内容吗?
由于数据库规模较小,我们该怎么办,我们的系统包含大量大于2 gb的大文件
当您使用SSMS获取数据库大小时,将触发查询以获取数据库大小:
select sum(cast(gs.size as float))*convert(float,8)
from sys.database_files gs
如果您触发类似的查询但没有聚合:
SELECT DF.type
, DF.type_desc
, DF.name
, DF.size
FROM sys.database_files AS DF
您应该看到type=2
的行,这是您的FILESTREAM
文件。
简而言之, FILESTREAM
文件包含在数据库大小中,就像LOG
和DATA
文件一样。 这是有道理的,因为这就是为什么您必须ADD FILEGROUP
和ADD FILE
。
有关sys.database_files
更多信息,请参见此处 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.