SQL Server 2008存储体系结构(一)

2014-11-24 15:47:52 · 作者: · 浏览: 1
Resource数据库
  数据库系统对象有一个共同的来源,Resource数据库,这个数据库是所有系统对象的物理存储库,在SQL Server的正常操作期间是不可访问的。虽然系统对象在物理上都存储与Resouce数据库中,但是他们在逻辑上表示为每个数据库中的sys架构。正常的SQL Server时不允许访问Resource数据库,但是可以使用系统函数和全局变量检索数据库的有关信息。将所有系统对象持久化到Resource数据库中可以快速部署服务包及升级到SQL Server 2008.在安装服务包时,这个过程只是用新版本的Resource数据库替换原有版本,并且对运行的系统对象执行所需要的任何改动。这大大减少了升级SQL Server所需的时间。
  sys架构可以包含被数据库管理员用来检索有关数据库中对象的信息的视图。一般来说,数据库管理员需要访问的大多数信息都可以通过使用系统函数和存储过程来获取,他们会返回系统对象的元数据,然而,有时候直接从系统对象中检索元数据更有帮助。sys架构中的视图就用于此目的。
物理存储类型 www.2cto.com
  定长数据类型:bit;tinyint;smallint;int;bigint;decimal;numeric;smallmoney;money;real;float;smalldatetime;datetime;datetime2;datetimeoffset;date;time;char;nchar;binary;rowversion;uniqueidentifier
  变长数据类型和大型对象数据类型:varchar;nvarchar;varbinary;varbinary;text;ntext;image;XML;sql——variant
  CLR数据类型:bierarchyid;geometry;geography
  行内数据:通过使用large value types out of row选项,数据库管理员可以指定将所有的varchar(MAX)、nvarchar(MAX)和varbinary(MAX)数据都视为大型对象数据,并存储在行外部的单独的代谢那个对象数据页上。可以将该选项设为ON或者OFF,如:sp_tableoption 'tablename', 'large value types out of row','ON'。
  FILESTREAM数据:SQL Server 2008的一个增强功能是在数据库外部存储非结构化数据,如文本文档、图像和视频,但又链接至在其中定义列的行。通过将varbinary(MAX)二进制大型对象数据存储为文件系统上的文件,而不是存储在数据库数据文件中单独的大型对象数据页上,FILESTREAM集成了数据库引擎与NT文件系统。Transac-SQL语句可以插入、更新、查询和备份FILESTREAM数据。为了使用FILESTREAM,数据库需要一个指派为FILESTREAM存储区域的文件组:
USE Master
GO
ALTER DATABASE AdventureWorks2008
ADD FILEGROUP MyFilestreamGroup
CONTAINS FILESTREAM
GO www.2cto.com
ALTER DATABASE AdventureWorks2008
ADD FILE (NAME=N'FileStreamData',FILENAME=N'D:\SQLData\FileStreamData') TO FILEGROUP MyFilestreamGroup
GO
  在想数据库添加了新文件组后,可以添加或修改表,以将表的二进制大型对象数据作为数据库引擎管理的对象存储到文件系统中:
USER AdventureWorks2008
GO
CREATE TABLE MyLargeData
(DocumentIdentifier uniqueidentifier ROWGU IDCOL NOT NULL UNIQUE,DocumentFile VARBINARY(MAX) FILESTREAM NULL)
GO
  需要记住的是,启用FILESTREAM存储的表必须有一个非NULL的唯一ROUGUID列。要向已有的列添加FILESTREAM列,必须确保表有一个ROWGUID列,否则必须添加一个
  其他数据类型:table;cursor
SQL Server 数据库文件
  SQL Server将数据存储在数据文件中,将事务存储在事务日志文件中。通过一个逻辑数据库名称将他们集合到一起,这些文件就是数据库数据库可以有多个数据文件和多个事务日志文件。在首次创建数据库的时候,他会有一个默认扩展名为.mdf的主数据文件,数据库也可以有默认名为.ndf的辅助数据文件,这些数据文件可以组合到一个称为文件组的逻辑组中。还有一个默认扩展名为.ldf的食物日志文件,可以使用任何扩展名,但是不建议进行更改。
数据文件
  数据库的主数据文件.mdf和任何辅助数据文件.ndf有着相同的结构。这两种文件用来存储数据,以及可让SQL Server有效的查找、读取、修改和添加数据到数据库的元数据。来自表和索引的所有数据以及描述数据的元数据都组织在成为区和页的存储对象中。
  区:区是SQL Server的一种文件存储结构,大小为64KB,区由8个连续的8KB页组成。区分为两种,混合区和统一区。混合区包含来自多个对象的页,可以同时包含来自表A的数据页,表B的索引页和表C的数据页。因为一个区有8个页,所以8个不同的对象可以共享一个区。统一区包含8个同属于同一对象的连续页。挡在数据库操作期间检索数据或将数据写入磁盘时,区是数据检索的基本结构。 www.2cto.com
  页:SQL Server 2008数据库的所有数据和元数据都存储在页中。和区不一样,也总是存储来自同一个对象的数据。这包括来自表的行、来自索引的行以及大型对象数据。每个页有一个96自己的表头,它含有页的信息,如页码、存储在页上的数据类型,页上的可用空间,以及拥有该页的对象。页可以分为数据页、索引页、文本/图像页、全局分配映射表和辅助全局分配映射表、页可用空间页、索引分配映射页、大容量更改映射表页、差异更改映射表页
事务日志
  事务日志用来在一个特定的时间间隔内,维护发生在一个SQL Server数据库上的所有事务的物理记录。具体时间间隔取决于数据的恢复模式。默认的配置下,事务日志记录所有的数据库修改,并且除非是已经备份或者被数据库管理员显示阶段,这些记录是不会被删除的。事务日志是一个二进制文件。它不是一个可用的日志查看器或者记事本卡开并查看的传统日志文件,因此数据库管理员需要使用一些第三方产品来打开并查看事务日志的内容。
  事务日志作为一个或多个物理文件在磁盘上进行维护,多数情况下,一个文件已经足够,因为在一个事务日志文件完全写满之前不会使用其他任何日志文件。在内部,物理事务日志文件分为多个虚拟日志,虚拟日志文件的数量和大小由SQL Server动态配置,因此不是手动可以更改的。当SQ