SQL SERVER表压缩
概述
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、当更新或删除时,行压缩对象保留当前的压缩级别。但是页压缩可能需要重新计算,取决于发生变化的数据量。
用哪种压缩
- 需要频繁更新的对象应该使用行压缩。
- 只是执行读取操作的应该使用页压缩。
SQL SERVER表压缩的更多相关文章
- SQL Server 表压缩
表压缩有三个选项 1.page 2.row 3.none ----------------------------------------------------------------------- ...
- 在一个SQL Server表中的多个列找出最大值
在一个SQL Server表中一行的多个列找出最大值 有时候我们需要从多个相同的列里(这些列的数据类型相同)找出最大的那个值,并显示 这里给出一个例子 IF (OBJECT_ID('tempdb..# ...
- SQL Server表分区的NULL值问题
SQL Server表分区的NULL值问题 SQL Server表分区只支持range分区这一种类型,但是本人觉得已经够用了 虽然MySQL支持四种分区类型:RANGE分区.LIST分区.HASH分区 ...
- SQL Server 表变量和临时表的区别
SQL Server 表变量和临时表的区别 一.表变量 表变量在SQL Server 2000中首次被引入.表变量的具体定义包括列定义,列名,数据类型和约束.而在表变量中可以使用的约束包括主键约束,唯 ...
- [转载]在SQL Server 中,如何实现DBF文件和SQL Server表之间的导入或者导出?
原来使用SQL Server 2000数据库,通过DTS工具很方便地在SQL Server和DBF文件之间进行数据的导入和导出,现在安装了SQL Server2005之后,发现其提供的“SQL Ser ...
- SQL server 表中如何创建索引?
SQL server 表中如何创建索引?看个示例,你就会了 use master goif db_id(N'zhangxu')is not nulldrop database zhangxugocre ...
- SQL Server表分区【转】
转自:http://www.cnblogs.com/knowledgesea/p/3696912.html SQL Server表分区 什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在 ...
- SQL SERVER表不能修改表结构的处理方法
SQL SERVER表提示不能修改表结构,这究竟是什么原因呢?下面就为您介绍处理该问题的方法,如果您在SQL SERVER表修改方面遇到过问题,不妨一看. 新装的SQL SERVER 2008,打开原 ...
- SQL Server表分区详解
原文:SQL Server表分区详解 什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在一个文件里. 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆 ...
随机推荐
- xticks,yticks
原本的图片如下所示: 如果加上这样的语句: import matplotlib.pyplot as plt plt.xticks([]),plt.yticks([]) 显示结果就为:
- 035 Android 广播(BroadCastReceiver)
1.介绍 2.实现方法 3.注册广播 (1)静态广播 在AndroidManifest.xml文件中注册广播 <intent-filter>为过滤器 <receiver androi ...
- 修改Linux服务器中的MySql密码
1.可以直接在数据库中修改,因为知道root密码,所以直接登录 mysql -uroot -p 2.查看一下数据库,修改root密码需要使用如下图所示的mysql数据库 3.通过use mysql指明 ...
- [转帖]AMD:Zen 2霄龙处理器每美元性能可达英特尔至强5.6倍
AMD:Zen 2霄龙处理器每美元性能可达英特尔至强5.6倍 2019-10-20 6:35:38来源:IT之家作者:孤城责编:孤城评论:32 https://www.ithome.com/0/451 ...
- 综合应用,jieba,去标点,分词保存,统计,删词,输出
import jieba fp1=r'D:/python/a.txt' outph=r'D:/python/out.txt' f=open(fp1,'r',encoding='utf-8') txt= ...
- 【LEETCODE】33、LeetCode的Given a non-negative integer numRows, generate the first numRows of Pascal's triangle
package y2019.Algorithm.array; import java.util.ArrayList; import java.util.List; /** * @ProjectName ...
- Scratch编程与高中数学算法初步
scratch编程与高中数学算法初步 一提到编程,大家可能觉得晦涩难懂,没有一定的英语和数学思维基础的人,一大串的编程代码让人望而步,何况是中小学生. Scratch是一款由麻省理工学院(MIT) ...
- stm32f103的低功耗开启和关闭
stm32f103低功耗分为WFI等待中断和WFE等待事件,我只用到等待中断,这里没有细究. 待机模式最低功耗2uA,只有备份寄存器和待机电路供电,PLL,HSI,HSE断开,寄存器和SRAM复位,除 ...
- javascript之instanceof
定义和用法 instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上. 语法: object instanceof construct ...
- SQL Server的非聚集索引中会存储NULL吗?
原文:SQL Server的非聚集索引中会存储NULL吗? SQL Server的非聚集索引中会存储NULL吗? 这是个很有意思的问题,下面通过如下的代码,来说明,到底会不会存储NULL. --1.建 ...