SQL Server存储机制

  1、区段

  区段(extent)是用来为表和索引分配空间的基本存储单元。它由8个连续的64KB数据页组成。

  基于区段(而不是实际使用空间)分配空间的概念的要点:

  1.   一旦区段已满,那么下一记录将要占据的空间不是记录的大小,而是整个新区段的大小。一次分配一个区段而不是分配一个记录。
  2.   通过预分配空间,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存储机制相关推荐

  1. 实现基于SQL Server存储账号的MDaemon群集

    本章概述      MDaemon Server(以下简称 MDaemon) 的冗余方案有多种选择,本章将以 微软 公司出品的 SQL Server 2005 简体中文企业版(以下简称 SQL2005 ...

  2. SQL Server锁机制浅读

    SQL SERVER 锁机制浅读 内容为本人根据当前正在读的<SQL Server性能调优实战>(陈畅亮 吴一晴 著 机械工业出版社)和前辈分享的PPT,通读后的总结与汇总. 序 锁及事务 ...

  3. sql server 2008学习8 sql server存储和索引结构

    sql server的存储机制 区段: 是用来为表和索引 分配空间的基本存储单元. 由 8个连续的页面构成,大小为64kb. 区段的注意事项: 一旦区段已满,那么下一记录 将要占据的空间不是记录的大小 ...

  4. SQL Server 存储引擎-剖析Forwarded Records

    我们都知道数据在存储引擎中是以页的形式组织的,但数据页在不同的组织形式中其中对应的数据行存储是不尽相同的,这里通过实例为大家介绍下堆表的中特有的一种情形Forwared Records及处理方式. 概 ...

  5. 使用SQL Server存储ASP.NET Session变量

    创建和配置ASP.NET Session状态数据库 在基于NLB(网络负载平衡)环境下的ASP.NET Web应用程序开发,我们需要将Session存储在数据库中供多个Web应用程序调用,以下为配置方 ...

  6. SQL Server安全机制–如何控制用户能够在报告中查看哪些数据

    介绍 ( Introduction ) A few years back, a client asked me to implement a quick and dirty "securit ...

  7. SQL SERVER 存储大全以及常见实例

    xp_cmdshell --*执行DOS各种命令,结果以文本行返回. xp_fixeddrives --*查询各磁盘/分区可用空间 xp_loginconfig --*报告SQL Server 实例在 ...

  8. SQL Server 存储(3/8):理解GAM和SGAM页

    我们知道SQL Server在8K 的页里存储数据,区就是物理上连续的8个页.当我们创建一个数据库,数据文件会被逻辑分为页和区,当用户对象创建时,页会分配给它用来存储数据.GAM(Global All ...

  9. sql server锁机制

    [导读: 各种大型数据库所采用的锁的基本理论是一致的,但在具体实现上各有差别.SQL Server更强调由系统来管理锁.在用户有SQL请求时,系统分析请求,自动在满足锁定条件和系统性能之间为数据库加上 ...

最新文章

  1. c语言中throw的用法,C中的内联throw()方法
  2. linux mkdir错误,thinkphp在linux下报mkdir()错误
  3. 绍兴市一男子醉酒驾车还冲上公交车暴打司机
  4. CSAPP:Attack lab
  5. linux 执行脚本报错:nginx_check.sh:行10: 语法错误: 未预期的文件结尾
  6. 搜索一个问题 C、C++判断操作系统 是 Linux还是windows 还是Unix【编译器内置宏 探索(不是特别满意)】...
  7. C# 压缩PDF图片
  8. getch方法_c语言中中getch()函数为什么不起作用?
  9. mw150um 驱动程序win10_水星MW150UM无线网卡驱动下载-水星MW150UM 1.0无线网卡驱动官方版下载[电脑版]-华军软件园...
  10. jquery 文件上传 触发两次_聊一聊jquery文件上传(支持多文件上传)
  11. Java使用DES加密解密
  12. ORACLE 中利用推理逻辑去算 上年同期 ,注意:ORACLE中查询条件是带有推理逻辑功能的,及oracle中的推理逻辑
  13. 用styler更改样式后,解决数据框中数据无法保留四位小数
  14. 基于Opencv3的活动轮廓模型--CV, RSF and DRLSE
  15. 永恒之蓝ms17_010漏洞复现
  16. 64位系统的Detours
  17. 回味那些评论有时候也能受教--摘自双鱼座ROM之硬件评论
  18. 双面女间谍第一至五季/全集Alias迅雷下载
  19. 3ds Max云渲染有多快,3ds Max云渲染怎么用?
  20. python 类的使用(2) 之类变量

热门文章

  1. C#使用读卡器读取身份证信息(包含物理卡号)
  2. 甲骨文CEO拉里埃里森在耶鲁大学的演讲
  3. c语言笔段式,缠论的分笔分段公式
  4. 2021智博会全国区块链大赛暨首届“星火杯”区块链应用大赛正式启动
  5. 线性模型——异方差、序列相关、多重共线性与内生性的处理
  6. NuGet 是什么? 理解与使用
  7. 架构师之路,视频号开通,首次真人出镜
  8. 【鱼C·零基础入门学习Python】课后习题答案 第14课
  9. java cause_Java中getCause()方法的重要性?
  10. feko 2017安装教程