我们知道文件流是一种机制,用于在文件系统中存储大于1 mb的文件,以提高流媒体性能
让我们假设我们有一个1.5 GB的文件 我们有以下表文档,其中包含文件流属性
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的大文件
答案 0 :(得分:1)
使用SSMS获取数据库大小时,会触发查询以获取大小:
navigate() {
this.router.navigate([], {queryParams: { mValue: this.myValue }});
}
如果您在没有聚合的情况下触发类似的查询:
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
。