我在生产中有一个数据库,需要减少数据库的磁盘大小。我按照说明收缩文件,但结果有点令人惊讶。
很抱歉这里有很多数字,但我不知道如何更好地表达问题。
数据库只包含一个包含11,634,966行的表。
表结构如下我刚刚更改了列名
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff887dc866 __pthread_kill + 10
1 libsystem_pthread.dylib 0x00007fff87a3935c pthread_kill + 92
2 libsystem_c.dylib 0x00007fff88614bba abort + 125
3 libsystem_c.dylib 0x00007fff885dea5f __assert_rtn + 321
4 com.apple.coreui 0x00007fff875aa1a7 CUIRenditionKeySetValueForAttribute + 307
5 com.apple.coreui 0x00007fff875a9004 -[CUIStructuredThemeStore _canGetRenditionWithKey:isFPO:lookForSubstitutions:] + 200
6 com.apple.coreui 0x00007fff875a8f1b -[CUIStructuredThemeStore canGetRenditionWithKey:] + 22
7 com.apple.coreui 0x00007fff875c4eab -[CUICatalog _resolvedRenditionKeyForName:scaleFactor:deviceIdiom:deviceSubtype:] + 291
8 com.apple.coreui 0x00007fff875c4c53 -[CUICatalog imageWithName:scaleFactor:deviceIdiom:deviceSubtype:] + 29
9 com.apple.AppKit 0x00007fff88820b1b +[NSImage _catalogImageWithName:bundle:] + 132
10 com.apple.AppKit 0x00007fff8881aefd +[NSImage imageNamed:] + 261
排除XML字段,我计算出每行的数据大小为68字节。
我针对数据库运行查询,查找xml字段F8的min,max和avg大小
显示以下内容:
id bigint not null 8 -- the primary key (clustered index)
F1 int not null 4
F2 int not null 4
F3 int not null 4
F4 datetime not null 8
F5 int not nul 4
F6 int not null 4
F7 int not null 4
F8 xml ?
F9 uniqueidentifier 16
F10 int 4
F11 datetime not null 8
收缩数据库后磁盘上的文件大了108G。
这转化为以下
min : 625 bytes
max : 81782 bytes
avg : 5321 bytes
但这意味着开销为41.948%
这是预期的吗?我能做些什么来减少108G的磁盘大小。
BTW表上只有一个聚集索引。
我正在使用SQL Server 2008(SP3)