SQL ServerSQL Server 2008 压缩

行SQL查询时,主要的几乎个瓶颈在于:CPU运算速度、内存缓存区大小、磁盘IO速度。而对大数据量数据的查询,其瓶颈则一般集中让磁盘IO,以及内存缓存。那么以加强SQL查询的频率,一方面我们得考虑尽量减少查询设计的数量条目数——建立目录,设立分区;另一方面,我们啊得以考虑现实压缩数据表物理大小,从而减少IO大小。在SQL
Server
2008遭,最新提供了千篇一律项意义“压缩(Compression)”,就是用来减少数据表、索引物理大小。
安压缩
于小卖部管理器中,在得减少的表明要探寻引上右键选择Storage-》Manage
Compression:

SQL Server 1

这边可以看到几沾:
  1.
下方列表里排有了该表所有的分区,也就是足以同样张表的例外分区应用不同之回落策略。
  2. 削减方式(Compression Type)分为Row和Page两种植。
行级压缩(Row):
     
一方面减少了动态长度字段元数据的大大小小(varchar、varbinary等),比如事先存储字段实际尺寸要2bytes,压缩后才需要3bits。
     
另一方面也直压缩各级字段存储内容的轻重缓急,比如存储数值1每当一个int类型字段中,压缩后止占了一个字节。
页级压缩(Page):可知在各行间共享相同之多寡,这个中含有两宗技艺:列前缀(Column
Prefix)、页字典(Page Dictionary)。
     
列前缀可以于有相同前缀的配段值拥有类似外键一样的组织来存储相同之前缀和各自的其余部分。
页字典则足以用于利用列前缀基础及之其余部分再次集结存储,比如同是同等布置存储了一个网站有页面URL的阐发,假设有在表里里有多修URL字段的价相同,比如
‘1a.html’,‘1b.html’,‘1c.html’,‘1b.html’,‘1a.html’,‘1a.html’,则经过页字典技术压缩后,实际存储在字段中的值会进一步减少为2,3,1c.html(没有更的许段值未会见给抽),‘3’,‘2’,‘2’。

3.
点击“计算”后,会算出表当前占有的半空中尺寸,以及减少需要之空中尺寸。注意这里和一般预料的两样,如果如对同一摆放预存有数量只是无压缩的表明进行削减,首先需之凡格外的上空大小。
执行压缩
安装好以后,就得选取是生成脚本还是就执行,一般减去的行时受表原有数据稍以及选择压缩方式的熏陶。笔者对同样张发上千万漫漫记下的表做页级压缩,耗时于10分钟左右。
减掉完成后查看数据库大小,会发觉数据库的轻重缓急变换大了!这为和在设置等计算出来的附加空间相关。但实在这里大部分上空是预占的空中,并没有实际数目。如果欲省磁盘空间,需要进一步实施收缩(Shrink)操作。
与Compression不同,Shrink用来释放数据库占据的从未有过使用的空间,一般用来对无用的日志文件收缩(如果操作频繁,日志文件特别有或超越数据库实际数目的轻重)。这里我们对数据库文件(mdf)做Shrink操作,完成以后重新拘留数据库的大大小小,果然减少了多。笔者做缩减、Shrink之后,一般还能够拿数据库的轻重减为本的1/3~1/2左右。当然,具体压缩比率取决于压缩方式、压缩表的字段特点、压缩表占全部数据库数据的百分比等。
注意事项
  1.
既对表行了滑坡,那么在实行查询时必定会生脱压缩的长河。而立等同历程会占有CPU时间,也就算是咱们于经削减减少了磁盘占用空间以及IO时间之同时,增大了CPU的消耗。所以在减小前要考虑清楚查询的瓶颈到底是磁盘IO还是内存还是CPU。而且如果表动了削减,类似建立目录,对于增删改等操作为会见发早晚之震慑。所以同样如果考虑使用在表上的操作到底坐哪种为主。
  2.
各级页面的减少是单独开展的,页字典和列前缀也各自存储于各级页内。而且滑坡仅于多少页快满的时节进行,因为一个页的轻重缓急是永恒的,压缩半页不见面发出总体性达到之提升。
  3. 数据库备份中吗有Compression
的选项,但就使的凡网的公文减少技术,而且只能使用叫一切数据库及。
  4.
爱让忽略的凡,索引也能SQL Server给抽,而且与发明压缩独立,同样也会升级所有应用到目录的询问的习性。
  5.
在Shrink阶段,可能会见导致大量的目录碎片,所以可以以Shrink完成后重建还是做织索引,但还要,这些操作为会见导致数据库的体积变死……也就算是,最小之数据库体积与最好小散比率的目是鱼与熊掌,不可兼得。

相关文章