SQL Server数据表压缩
作者:springsnow 发布时间:2024-01-25 21:47:12
概述
SQL Server的主要性能取决于磁盘I/O效率,SQL Server 。
2008提供了数据压缩功能来提高磁盘I/O效率。
表压缩意味着减小数据的磁盘占有量,所以压缩可以用在堆表、聚集索引的表、非聚集索引的表、索引视图、分区表上。
可压缩的数据类型
smallint、int、Bigint、decimal、numeric、real、float、money、smallmoeny、bit、datetime、datetime2、datetimeoffset、char、nchar、binary、rowversion。
SQLServer中有两种压缩类型:数据与备份
行压缩
压缩会改变数据的物理存储方式,但不需要对代码做任何修改。
行压缩流程:首先识别表中每一列的数据类型,然后转换为可变长度,最后将存储空间的请求总量减少到实际需求量。
如:固定长度的类型int、char、nchar等,在数据页中以不定长度的方式存储(存储真实数据长度)。
1、SSMS行压缩
表->右键->存储->管理压缩->对所有分区使用相同压缩类型->右侧 选择row->立即执行->完成。
ALTER TABLE [dbo].[AnnexFileList] REBUILD PARTITION = ALL
WITH ( DATA_COMPRESSION = ROW );
在压缩堆表或聚集索引时并不同时包含非聚集索引,因此需要另外单独对非聚集索引进行操作。
索引->右键->存储->管理压缩->对所有分区使用相同压缩类型->右侧 选择row->立即执行->完成。
ALTER INDEX [PK_ANNEXFILELIST]
ON [dbo].[AnnexFileList] REBUILD PARTITION = ALL
WITH ( DATA_COMPRESSION = ROW );
2、T-SQL行压缩
--在现有表进行压缩
--聚集
alter table ceshi rebuild with(data_compression=row)
--非聚集
alter index new_name on ceshi rebuild with(data_compression=row)
--在创建表时进行压缩
create table yasuo
(
id int primary key,
name varchar(50),
mail varchar(50)
)
with (data_compression=row)
创建时指定行压缩方式,这时并未发生改变。只要数据插入表中,该行即被压缩。
页压缩
页压缩通过执行额外的一些步骤增强了行压缩的功能。
页压缩步骤:行压缩、前缀压缩、字典压缩。
首先对于每一列将确定一个值,此值可以减少每一列中值的存储空间。一旦确定该值后,每一列的前缀值的行将被存储在页头中。所有的信息称为压缩信息,存储在页头之下。标识的值(前缀值)位于没列中,将由指向压缩信息部分中对应值的引用进行替换。
下一步字典压缩,搜索整个页面而非单个列,重复值被移动到页头的压缩信息部分,取而代之的是指向该值的引用。
在SSMS中页压缩步骤与行压缩步骤一致,只是选择压缩方式为Page。T-SQL中将row改成page即可。
需要注意
1、如果保留在内存中的数据是压缩的,一旦被选中,则必须先进行解压缩。
2、在插入新行时,数据也是行或页压缩的。
3、当更新或删除时,行压缩对象保留当前的压缩级别。但是页压缩可能需要重新计算,取决于发生变化的数据量。
用哪种压缩
需要频繁更新的对象应该使用行压缩。
只是执行读取操作的应该使用页压缩。
来源:https://www.cnblogs.com/springsnow/p/9599408.html


猜你喜欢
- [PHP] ; PHP还是一个不断发展的工具,其功能还在不断地删减 ; 而php.ini的设置更改可以反映出相当的变化,
- Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。要注意,这里的偏函数和数学
- def cndebug(obj=False): """ Author : Nemon Update : 200
- 前言相比java,python的异常和java中不同,python主要是防止程序异常被中止。一旦被catch后它还行往下执行。一、异常1.1
- Pytorch测试神经网络时出现“RuntimeError: Error(s) in loading state_dict for Net”
- 一、前言阿姨花了30元给幼儿园的小弟弟买了一本习题,里面都是简单的二元加减法。我一听,惊道:“怎么还花钱买题?我动动手指能给你生成一千条。”
- 1、为什么淘宝的手机频道页面,竟然会有笔记本、数码相机、随身听,甚至是游戏之类的栏目,而且还有一个“数码·生活”栏目是包括以上这些设备的综合
- 一、前言:当数据库服务器建立好以后,我们首先要做的不是考虑要在这个支持数据库的服务器运行哪些受MySQL提携的程序,而是当数据库遭到破坏后,
- XML即可扩展标记语言(eXtensible Markup Language)。标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可
- 本文实例讲述了Python实现读取Properties配置文件的方法。分享给大家供大家参考,具体如下:JAVA本身提供了对于Properti
- 例题取用登录模块:代码如下def login_check(username,password):''' 登录校验的函
- 导语:使用 python-plotly 模块来进行压测数据的绘制,并且生成静态 html 页面结果展示。不少小伙伴在开发过程中都有对模块进行
- 页面中无法看见页面,指向的连接网页无法显示 解决方法:1、首先在Dreamweaver中不能中文作为文件名。连目录名也最好是英文的。2、如果
- 一、字符串(str)字符串转换为列表使用list()方法str_1 = "1235"str_2 = 'zhang
- 原因是:It looks like you need to flush stdout periodically (e.g. sys.stdo
- 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句
- 1. 简介在 Go 语言中,new 和 make 是用于创建对象的两个内建函数,它们的使用方式和作用有所不同。正确理解 new 和 make
- 一、Go的内建类型errorerror类型其实是一个接口类型,也是GO语言的内建类型;在这个接口类型的声明中只包含了一个方法Error;Er
- 本文为大家分享了python2.7.14的安装教程,供大家参考,具体内容如下1.下载python2.7.14下载地址根据自己电脑配置进行选择
- 1、从数据库表中检索信息实际上,前面我们已经用到了SELECT语句,它用来从数据库表中检索信息。select语句格式一般为:SELECT 检