zoukankan      html  css  js  c++  java
  • 数据库空间管理-学习笔记

    来自《SQL Server 2012实施与管理实战指南》

    1.数据文件的存储结构:

    页:数据存储的基本单位是页,每一个页为8kb,每MB有128页。磁盘的IO操作在页级。每页开头是一个96字节的页头,用于存储页的系统信息,包括页码、页类型、页的可用空间,以及拥有该页的对象的分配单元ID。不同类型的数据存储在不同类型的页面里面。

    (1) GAM(Global allocation map):存储在数据文件的第3个页上,文件和 页编码为(1:2),以Bit位来标识相应的区(Extends)是否已经分配。差不多能标识64000个区(8kb page*8 bit per byte),即64000*8kb*8=4096000kb=4GB.当数据空间超过4GB时,则以另一个GAM来标识下一个4GB的空间。

    Bit=1,代表区空闲,可分配

    Bit=0,代表区已被使用

    (2) SGAM(Shared Global Allocation Map),存储在数据文件的第4个页上,文件和页编号为(1:3),结构和GAM相同,bit含义不同

    Bit=1,代表混合区,且区内至少有一个页可用来分配;

    Bit=0, 代表混合区或统一区,但区内所有页都已被使用;

    区:8个物理上连续的页的集合,如果区内8个页属于同一个table,则叫统一区。否则,叫混合区

    (3) (PFS)Page free space:存储本数据文件里所有页分配和可用空间的信息

    (4) Index allocation map:表或索引使用空间的信息

    (5) Bulk changed map:自最后一个backup log语句之后的大容量操作所修改的区的信息

    (6) Differential changed map:自最后一条Backup database 语句之后更改的区的信息

    (7) Data:用来存放数据

    (8) Row overflow page:当一条记录超过8000字节时候,借此存放超出部分的数据

    (9) LOB:存放大型对象数据类型:Text、ntext、image、nvarchar(max)、Varchar(max)、Varbinary(max)和XML数据

     2.表存储结构

    每张表对应一个object ID,并拥有一个或多个partition,通常一个partition对应一个索引,每个Partition会有一个或多个Heap或B-tree(简称Hobt),通常认为Partition与Hobt是一样的,Partition ID也是Hobt ID.每个Hobt至多有3个分配单元用于存放数据。最频繁分配的单元是Data。

    (1) 表没有任何索引

     表按Heap(堆)的结构存储,只有一个Partition。在系统表里,对于Partition下的每个分配单元都有一个连接指向IAM 页,并在页里描述了区的信息,所有数据页之间没有任何关系,完全依赖IAM页组织。

    (2) 有非聚集索引而没有聚集索引的表

    每一个非聚集索引,对应一个Partition,在每个partition下的每个分配单元,都有一个连接指向Root Page,数据页之间通过前后指针互相联系,是一个完整的树形结构, 在结构的底层有一个连接指向真正的数据,然后以heap的方式存放。

    (2) 表有聚集索引

     聚集索引,IndexID=1,对应一个partition,

     

  • 相关阅读:
    2010年度最有技术含量攻击:Padding Oracle Attack 狼人:
    微软宣布最新企业安全产品FEP 免费试用 狼人:
    金山卫士开放第三批源代码 ARP防火墙可下载 狼人:
    Gawker攻击事件暴露密码保护缺陷 狼人:
    Win7和Mac及HTML5将成黑客2011年攻击重点 狼人:
    开发人员发现Chrome浏览器漏洞获谷歌重奖 狼人:
    FBI被指在OpenBSD的IPSEC协议栈中放置后门 狼人:
    微软发布重大安全忧患警告或影响全球9亿用户 狼人:
    MHTML中曝出0day漏洞 影响各版Windows 狼人:
    nullnullCSharp Tools Compiler
  • 原文地址:https://www.cnblogs.com/roseHLF/p/9337059.html
Copyright © 2011-2022 走看看