SQL Server 2012笔记分享-10:理解数据压缩
关键概念
配置数据压缩可以通过SSMS和T-SQL语句两种方式来实现。
表和索引压缩
对于行存储表和索引,使用数据压缩功能可帮助减小数据库的大小。 除了节省空间之外,数据压缩还可以帮助提高 I/O 密集型工作负荷的性能,因为数据存储在更少的页中,查询需要从磁盘读取的页更少。 但是,在与应用程序交换数据时,在数据库服务器上需要额外的 CPU 资源来压缩和解压缩数据。
对于列存储表和索引,所有列存储表和索引始终使用列存储压缩,并且用户无法对此进行配置。 在您能够付出额外的时间和 CPU 资源来存储和检索数据的情况下,使用列存储存档压缩可进一步减少数据大小。
行压缩和页压缩
启用压缩只会更改与数据类型相关联的数据的物理存储格式,而不会更改其语法或语义。
行压缩的实现:http://msdn.microsoft.com/zh-cn/library/cc280576.aspx
表、表分区、索引和索引分区的页压缩都是类似的。
页压缩的实现:http://msdn.microsoft.com/zh-cn/library/cc280464.aspx
sp_estimate_data_compression_savings
返回所请求对象的当前大小并估算对象在所请求的压缩状态下的大小。 可对所有表或部分表评估压缩。 这包括堆、聚集索引、非聚集索引、索引视图以及表和索引分区。 可使用行压缩或页压缩来压缩这些对象。 如果表、索引或分区已经过压缩,则可使用该过程来估计在重新压缩的情况下该表、索引或分区的大小。
可使用 sp_estimate_data_compression_savings 估算对表或分区启用行压缩或页压缩时可能带来的节省量。 例如,如果行的平均大小可以减少 40%,则可能可以将对象大小减少 40%。 您可能无法节省空间,因为这取决于填充因子和行大小。 例如,如果某行长度为 8000 字节并且您将该行的大小减少 40%,则数据页上仍只能容纳一行。 因此不会节省空间。
如果运行 sp_estimate_data_compression_savings 的结果指示表的大小将增长,则表示表中的许多行使用的几乎是数据类型的完全精度,因而为满足压缩格式的需要而增加的少量开销大于该压缩所带来的节省量。 在这种极个别的情况下,请不要启用压缩。
如果对表启用压缩,请使用 sp_estimate_data_compression_savings 估算在未压缩该表的情况下该行的平均大小。
在此操作期间将获取该表的 (IS) 锁。 如果不能获取 (IS) 锁,则该过程将被阻止。 该表将在已提交读隔离级别下进行扫描。
如果请求的压缩设置与当前的压缩设置相同,则该存储过程将返回在没有数据碎片且使用现有填充因子时的估计大小。
如果索引或分区 ID 不存在,将不返回任何结果。
参考:http://msdn.microsoft.com/zh-cn/library/cc280574.aspx
节省磁盘IO和内存
Unicode压缩
SQL Server 使用 Unicode 标准压缩方案 (Standard Compression Scheme for Unicode, SCSU) 算法实现来压缩在行或页压缩对象中存储的 Unicode 值。 对于这些压缩对象,Unicode 压缩对于 nchar(n) 和 nvarchar(n) 列而言是自动的。 数据库引擎 将 Unicode 数据存储为 2 个字节,无论区域设置如何。 这称为 UCS-2 编码。 对于某些区域设置而言,在 SQL Server 中实现 SCSU 压缩可节省高达 50% 的存储空间。
http://msdn.microsoft.com/zh-cn/library/ee240835.aspx
参考资料:http://msdn.microsoft.com/zh-cn/library/cc280449.aspx
SQL Server 2012笔记分享-10:理解数据压缩相关推荐
- SQL Server 2012笔记分享-6:理解内存管理
内存管理 – SQL Server 2005/2008/2008r2 SQL Server 2012以前的版本(SQL 2005/2008/2008R2),有single page allocator ...
- SQL Server 2012笔记分享-48:备份时间线
备份时间线是SQL server 2012数据库恢复顾问页面中的一项重要新功能,可以让我们更方便的基于备份时间点进行数据库的恢复. 在SQL server 2012的还原数据库界面,可以找到时间线,如 ...
- SQL Server 2012笔记分享-47:Database Recovery Advisor
下面英文的部分,参考了官方的语言. 简单来说,两大优势: 帮助数据库管理员创建最佳的恢复序列 使用msdb中的备份历史纪录 The Database Recovery Advisor(数据库恢 ...
- SQL Server 2012笔记分享-35:配置客户端网络协议
客户端应用程序可以使用 TCP/IP.命名管道.VIA 或共享内存协议连接到 Microsoft SQL Server.可以通过使用 SQL Server Native Client dll 中包含的 ...
- SQL Server 2012笔记分享-49:理解数据库快照
数据库快照是 SQL Server 数据库(源数据库)的只读静态视图. 自创建快照那刻起,数据库快照在事务上与源数据库一致. 数据库快照始终与其源数据库位于同一服务器实例上. 当源数据库更新时,数据库 ...
- SQL Server 2012笔记分享-29:日志文件的工作方式
预写日志 (WAL) SQL Server 使用预写日志 (WAL),此日志确保在将关联的日志记录写入磁盘后再将数据修改写入磁盘.这维护了事务的 ACID 属性. SQL Server 维护当必须检索 ...
- SQL Server 2012笔记分享-52:可用性指标
在电信和可靠性理论中,可用性是指: 系统,子系统,或者设备在开始一项任务时处在指定的可操作或可提交状态的程度,这项任务什么时候被用到是未知的,例如,是随机的.简单的说,可用性就是一个系统处在可工作状态 ...
- SQL Server 2012数据库应用与开发教程速成笔记
作者:山东某校大一学生,文学专业. 介于诸多高校计算机公共课程跟不上时代教育. 特此写出本文速成 SQL Server 前言:目前是2022年,市场上绝大多数公司使用的数据库大致为ORACLE和Mys ...
- SQL Server 2012 安装杂谈
回想一下,距离上次去微软培训SQL SERVER 2012已经有一段时间啦,从讲师打开2012的一瞬间,其实我已经开始想要跃跃欲试这个微软全新的数据平台工具,听闻2012比以前的2008R2那些版本做 ...
- SQLServer · 最佳实践 · RDS for SQL Server 2012 权限限制的提升与改善
title: SQLServer · 最佳实践 · RDS for SQL Server 2012 权限限制的提升与改善 author: 石沫 背景 SQL Server 作为一种强大的关系型数据库, ...
最新文章
- C#: .net序列化及反序列化 [XmlElement(“节点名称”)] [XmlAttribute(“节点属性”)] (上篇)...
- 眼球网站经济学之我见——在网站上建立现代的经济体系
- linux 内核源代码漫游,Linux内核源代码漫游——
- poj 1961 Period
- oracle查看jdk文档_Oracle JDK 9 Early Access文档已更新
- oracle的集合操作符,[Oracle] Oracle的集合操作符
- windows:(1)xmind常用快捷键
- netcore quartz job用不了services_.NetCore开源集成框架
- JEECG整合JXLS步骤与开发
- C# DataTable学习
- 即将开播!联想可能成为罗永浩直播带货的首批合作者
- WOW!今年iPhone XR将新增两种颜色:绿色和薰衣草色
- go去掉最后一个字符_可维护的Go代码程序指南(一)之变量篇
- 阿里巴巴内部开发手册
- Ajax技术(WEB无刷新提交数据)
- IKM-Java SE 8评估测试题挑战,测测你的基础水平
- Numpy:numpy包下载并导入Pycharm的方法
- python 统计图绘制,Python绘制统计图表
- 4、golang 发送电子邮件
- 地铁7号线路图_成都地铁7号线线路图_运营时间票价站点_查询下载
热门文章
- miui8.2 是android 7.0,因与MIUI 8.2撞车 小米5暂缺失安卓7.0
- mysql有程序过程吗_MySQL工作(执行)流程
- Layui 数据表格开启合计行
- golang:cannot unmarshal number into Go value of type []json.RawMessage
- Layui表格刷新(重载)
- kindeditor不过滤标签属性
- PHP中的ZIP压缩与解压
- 2021-11-17
- 遇到错误怎么办:ndk-build.cmd‘‘ finished with non-zero exit value 2
- Ubuntu安装时,下载太慢怎么办