这是我第一次尝试将图像存储在数据库而不是文件服务器中,到目前为止我很后悔。我无法使用文件流,因为我的主机不支持它,所以我使用 varbinary(max) 列。我正在跟踪我插入的图像大小,到目前为止大约有 28Mb,但数据库为 3.2Gb,这太疯狂了。我是否最好使用 varbinary(XXXX) 来减少这种情况 - SQL Server 是否为 MAX 保留空间?
使用 MS SQL Server 2008 顺便说一句
以下是顶部表格尺寸:
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
最佳答案
确保所有空间都被实际数据使用,而不是日志文件。
缩小日志文件只会删除未使用的空间。为了在收缩之前清除条目,您需要事先备份或截断日志(警告:如果您非常关心日志链,这可能会破坏它)
关于sql-server - SQL Server 2008 Varbinary(Max) 列 - 28Mb 图像创建 3.2Gb 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19084963/