2013-09-30 46 views
2

这是我第一次尝试将图像存储在我的数据库中,而不是文件服务器,至今我很遗憾。我无法使用文件流,因为我的主机不支持它,所以我使用varbinary(max)列。我正在跟踪我插入的图像大小,到目前为止大约有28Mb,但数据库在3.2Gb,这只是疯狂。我更好地varbinary(XXXX)来减少这个 - 是SQL Server预留MAX的空间吗?SQL Server 2008 Varbinary(Max)列 - 创建3.2Gb数据库的28Mb图像

使用MS SQL Server 2008的BTW

这里是顶级表尺寸:

TableName RowCounts TotalSpaceKB UsedSpaceKB UnusedSpaceKB 
Municipality 1028316 64264 64232 32 
Image 665 33616 33408 208 
User 320 248 224 24 
SettingUser 5910 264 160 104 
Region 1418 136 136 0 
ImageUser 665 56 56 0 
ConversationItem 164 56 56 0 
Setting 316 48 48 0 
Culture 378 40 40 0 
UserTrack 442 40 40 0 
Numbers 1000 32 32 0 
Country 240 32 32 0 
Conversation 52 32 32 0 
CountryIp 0 88 32 56 
ReportUser 0 16 16 0 
ConversationItemImage 0 16 16 0 

下面是EXEC结果注释sp_spaceused:

database_size unallocated space 
3268.88 MB 0.84 MB 

reserved data index_size unused 
359592 KB 291744 KB 66600 KB 1248 KB 

我应该还提到,有一个在市政表上的地理专栏,以防因空间索引而产生任何影响......我过去曾经使用过这么多次,没有任何问题,但我从未有过1M +记录通常小于20k

+0

我个人不会将SQL用于文件存储。只需将元数据存储在数据库中,并使用文件系统来存储实际文件。它只是不值得使用SQL,除非你有小千字节文件。 – jcwrequests

+0

600张图片的平均图像大小为43Kb我的理解是Varbinary对于1MB以下的任何东西都可以,但我倾向于同意你的看法 - 这是一个试用版,到目前为止我对它没有那么兴奋 – Rob

+0

它让我想起瑞士陆军刀海报“只因你不能代表你应该”的单一责任主席海报。祝你好运。 – jcwrequests

回答

2

确保所有空间都由实际数据使用,而不是日志文件。

收缩日志文件只会删除未使用的空间。为了在收缩之前清除条目,您需要手动备份或截断日志(警告:如果您关心的是日志链,这可能会破坏它)

相关问题