SQL Server存储机制
SQL Server存储机制
1、区段
区段(extent)是用来为表和索引分配空间的基本存储单元。它由8个连续的64KB数据页组成。
基于区段(而不是实际使用空间)分配空间的概念的要点:
- 一旦区段已满,那么下一记录将要占据的空间不是记录的大小,而是整个新区段的大小。一次分配一个区段而不是分配一个记录。
- 通过预分配空间,SQL Server节省为每个记录分配新空间的时间。
向当前分配的区段添加了过多的行就要占用整个区段,看起来是一种浪费,但是这种方法浪费的空间不多。但是,这些浪费的空间会累加,特别是在碎片较多的环境中。
占据所有空间的好处是SQL Server省去了一些分配时间的系统开销,不需在每次写入行时都考虑分配问题,SQL Server仅仅当需要新区段时才处理额外的空间分配。
不要将区段占用的空间和数据库占用的空间想混淆,分配给数据库的那些空间就是磁盘驱动器将要减少的可用空间。区段仅仅是在又数据库保留的整个空间内再次进行分配的方式。
2、页
页是特定区段中的分配单元。每个区段包含8页。
也是在到达实际数据行前所能达到的最后一个存储级别。尽管每个区段中的页数是固定的,但是每一页中的行数不是固定的。这取决于行的大小,而行的大小是可以变化的。可以把页看做是表行和索引行数据的容器。通常不允许跨行。
常用的页类型:
1、数据页:数据也是不需解释的-它们是表中的实际数据,但任何没有用text in row选项、varchar(max)或varbinary(max)定义的BLOB数据除外。
2、索引页:索引页也是相当直观-它们既包括非群集索引的非页级和页级页,又包括群集索引的非页级页。
在SQL SERVER中,存储的最小单位是页。SQL SERVER对于页的读取,要么整个读取,要么完全不读取,没有折中。
数据库页的大小是8K,实际能够存储的数据量为1024*8=8192-页头(96)-行偏移(36)=8060字节。
页拆分
当页满时,它会进行拆分。这意味着多个新页被分配-也意味着现有页上又近半的数据被移到新页上。
在使用群集索引时,会有例外。如果有一个群集索引,并且下一个插入的记录在物理上将作为表中的最后一个记录,那么创建一个新页,然后将该新行添加到这个新页中,而不需要重新定位任何现有数据。
3、行
行就是表中的一行记录。行最大可达8KB。除了8060字符限制外,还有最大1024标准列(非稀疏列)的限制,列就是表的一列数据,就是你理解的列。实际上,突破8060字符限制前用完列的情况不多见。1024提供了小于8字节的平均列宽度。1024个列,一个表通常才十几个列啊。当突破了1024个列时,就要运用到稀疏列。
4、稀疏列
稀疏列是SQL Server2008新引入的一种特殊的数据结构。它们主要用于处理重复的场景,其中的列只是偶尔会用到。大部分时候为空。许多时候,一旦遇到少量这类列,就意味着以后可能会遇到大量这类列。使用稀疏列,可以将单个表中允许的列的总数提高到30000。30000个列,什么概念?什么系统用得到这么多列。
Image、text、ntext、geography、geometry、timestamp和所有用户自定义数据类型不能被标记为稀疏列。
转载:http://www.cnblogs.com/kissdodog/archive/2013/06/12/3132353.html
SQL Server存储机制相关推荐
- 实现基于SQL Server存储账号的MDaemon群集
本章概述 MDaemon Server(以下简称 MDaemon) 的冗余方案有多种选择,本章将以 微软 公司出品的 SQL Server 2005 简体中文企业版(以下简称 SQL2005 ...
- SQL Server锁机制浅读
SQL SERVER 锁机制浅读 内容为本人根据当前正在读的<SQL Server性能调优实战>(陈畅亮 吴一晴 著 机械工业出版社)和前辈分享的PPT,通读后的总结与汇总. 序 锁及事务 ...
- sql server 2008学习8 sql server存储和索引结构
sql server的存储机制 区段: 是用来为表和索引 分配空间的基本存储单元. 由 8个连续的页面构成,大小为64kb. 区段的注意事项: 一旦区段已满,那么下一记录 将要占据的空间不是记录的大小 ...
- SQL Server 存储引擎-剖析Forwarded Records
我们都知道数据在存储引擎中是以页的形式组织的,但数据页在不同的组织形式中其中对应的数据行存储是不尽相同的,这里通过实例为大家介绍下堆表的中特有的一种情形Forwared Records及处理方式. 概 ...
- 使用SQL Server存储ASP.NET Session变量
创建和配置ASP.NET Session状态数据库 在基于NLB(网络负载平衡)环境下的ASP.NET Web应用程序开发,我们需要将Session存储在数据库中供多个Web应用程序调用,以下为配置方 ...
- SQL Server安全机制–如何控制用户能够在报告中查看哪些数据
介绍 ( Introduction ) A few years back, a client asked me to implement a quick and dirty "securit ...
- SQL SERVER 存储大全以及常见实例
xp_cmdshell --*执行DOS各种命令,结果以文本行返回. xp_fixeddrives --*查询各磁盘/分区可用空间 xp_loginconfig --*报告SQL Server 实例在 ...
- SQL Server 存储(3/8):理解GAM和SGAM页
我们知道SQL Server在8K 的页里存储数据,区就是物理上连续的8个页.当我们创建一个数据库,数据文件会被逻辑分为页和区,当用户对象创建时,页会分配给它用来存储数据.GAM(Global All ...
- sql server锁机制
[导读: 各种大型数据库所采用的锁的基本理论是一致的,但在具体实现上各有差别.SQL Server更强调由系统来管理锁.在用户有SQL请求时,系统分析请求,自动在满足锁定条件和系统性能之间为数据库加上 ...
最新文章
- c语言中throw的用法,C中的内联throw()方法
- linux mkdir错误,thinkphp在linux下报mkdir()错误
- 绍兴市一男子醉酒驾车还冲上公交车暴打司机
- CSAPP:Attack lab
- linux 执行脚本报错:nginx_check.sh:行10: 语法错误: 未预期的文件结尾
- 搜索一个问题 C、C++判断操作系统 是 Linux还是windows 还是Unix【编译器内置宏 探索(不是特别满意)】...
- C# 压缩PDF图片
- getch方法_c语言中中getch()函数为什么不起作用?
- mw150um 驱动程序win10_水星MW150UM无线网卡驱动下载-水星MW150UM 1.0无线网卡驱动官方版下载[电脑版]-华军软件园...
- jquery 文件上传 触发两次_聊一聊jquery文件上传(支持多文件上传)
- Java使用DES加密解密
- ORACLE 中利用推理逻辑去算 上年同期 ,注意:ORACLE中查询条件是带有推理逻辑功能的,及oracle中的推理逻辑
- 用styler更改样式后,解决数据框中数据无法保留四位小数
- 基于Opencv3的活动轮廓模型--CV, RSF and DRLSE
- 永恒之蓝ms17_010漏洞复现
- 64位系统的Detours
- 回味那些评论有时候也能受教--摘自双鱼座ROM之硬件评论
- 双面女间谍第一至五季/全集Alias迅雷下载
- 3ds Max云渲染有多快,3ds Max云渲染怎么用?
- python 类的使用(2) 之类变量