繁体   English   中英

文件流即使存储在文件系统上也增加了数据库大小

[英]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文件包含在数据库大小中,就像LOGDATA文件一样。 这是有道理的,因为这就是为什么您必须ADD FILEGROUPADD FILE

有关sys.database_files更多信息,请参见此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM