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和所有用户自定义数据类型不能被标记为稀疏列。
SQL Server存储机制的更多相关文章
- sql server 存储机制
1.区段 区段(extent)是用来为表和索引分配空间的基本存储单元.它由8个连续的64KB数据页组成. 基于区段(而不是实际使用空间)分配空间的概念的要点: 一旦区段已满,那么下一记录将要占据的空间 ...
- SQL Server存储机制二
http://blog.csdn.net/ltylove2007/article/details/21084585 http://www.cnblogs.com/anding/p/3254674.ht ...
- SQL SERVER存储引擎——04.数据
4. SQL SERVER存储引擎之数据篇 (4.1)文件 (0)主数据文件.mdf初始文件大小至少为3MB,次要数据文件.ndf初始大小,同日志文件一样至少为512KB: (1)SQL SERVER ...
- SQL Server存储ntext截断问题
SQL Server存储ntext截断问题 最近遇到一个问题:将大文本存储到数据库的时候,查询出来的文本却被截断了. 最后百度发现,作者提出 sql server management studi ...
- 转 一篇关于sql server 三种恢复模式的文章,从sql server 的机制上来写的,感觉很不错,转了
简介 SQL Server中的事务日志无疑是SQL Server中最重要的部分之一.因为SQL SERVER利用事务日志来确保持久性(Durability)和事务回滚(Rollback).从而还部分确 ...
- SQL Server 锁机制 悲观锁 乐观锁 实测解析
先引入一些概念,直接Copy其他Blogs中的,我就不单独写了. 一.为什么会有锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 1.丢失更新 A,B两个用户读同一数据并进行修改,其中 ...
- SQL Server 存储中间结果集
在SQL Server中执行查询时,有一些操作会产生中间结果集,例如:排序操作,Hash Join和Hash Aggregate操作产生的Hash Table,游标等,SQL Server查询优化器使 ...
- SQL Server 存储(1/8):理解数据页结构
我们都很清楚SQL Server用8KB 的页来存储数据,并且在SQL Server里磁盘 I/O 操作在页级执行.也就是说,SQL Server 读取或写入所有数据页.页有不同的类型,像数据页,GA ...
- SQL Server 存储(3/8):理解GAM和SGAM页
我们知道SQL Server在8K 的页里存储数据.分区就是物理上连续的8个页.当我们创建一个数据库,数据文件会被逻辑分为页和区,当用户对象创建时,页会分配给它用来存储数据.GAM(Global Al ...
随机推荐
- wpf 客户端【JDAgent桌面助手】开发详解(四) popup控件的win8.0的bug
目录区域: 业余开发的wpf 客户端终于完工了..晒晒截图 wpf 客户端[JDAgent桌面助手]开发详解-开篇 wpf 客户端[JDAgent桌面助手]详解(一)主窗口 圆形菜单... wpf 客 ...
- POJ2407 Relatives(欧拉函数)
题目问有多少个小于n的正整数与n互质. 这个可以用容斥原理来解HDU4135.事实上这道题就是求欧拉函数$φ(n)$. $$φ(n)=n(1-1/p_1)(1-1/p_2)\dots(1-1/p_m) ...
- BZOJ4299 : Codechef FRBSUM
若$[0,i]$的数都可以得到,那么$[1,所有不大于i+1的数的和]$的数都可以得到. 如此暴力枚举答案,用可持久化线段树支持查询,因为每次数字至少翻一倍,所以复杂度为$O(m\log^2n)$. ...
- OI分类
黑字:认识 红字:要学 未添加:要学 ├─模拟├─字符串│ ├─字符串基础│ ├─manacher│ ├─kmp│ ├─trie│ ├─ac自动机│ ├─后缀数组( ...
- 四、saltstack如何管理对象?
实验前环境: [root@super65 ~]# salt-key -L[root@super65 ~]# salt-key -a super65.cn -y salt管理对象简介: saltstac ...
- thinkphp模型没继承model报的错
Call to undefined method RoleModel::query() 错误位置 FILE: H:\www\tpsmarty\shop\Lib\Model\RoleModel.clas ...
- https资料
1.HTTPS的七个误解 http://blog.httpwatch.com/2011/01/28/top-7-myths-about-https/ 中文 http://www.cnblogs.c ...
- android之OptionsMenu
首先编写res/layout/Activity_main.xml 代码如下: <LinearLayout xmlns:android="http://schemas.android.c ...
- PHP+jQuery 注册模块的改进之二:激活链接的URL设置与有效期
接<PHP+jQuery 注册模块的改进之一>继续修改: ①在注册成功后返回登录邮件页面( maillogin.php ),在页面中用户可以点击链接跳转到自己注册邮箱的登录页面,可以再次发 ...
- How To Ask Questions The Smart Way
How To Ask Questions The Smart Way Eric Steven Raymond Thyrsus Enterprises <esr@thyrsus.com> R ...