SQL Server 2005和2008里的物理数据存储(一)

2008-11-5   
   | |

导读:本篇文章主要是发现SQL Server数据存储的物理对象和原理,本文节选自《SQL Server数据建模开发者指南》,范围包括SQL Server 2005和2008。你将从本文中了解各种……

关键词:SQL Server 2005 SQL Server 2008 物理数据存储

正在加载数据...

【TechTarget中国原创】本篇文章主要是发现SQL Server数据存储的物理对象和原理,本文节选自《SQL Server数据建模开发者指南》,范围包括SQL Server 2005和2008。你将从本文中了解到各种数据类型、如何使数据主键和外键进行整合以及进行编码存储程序和参数的适当的步骤。作者Eric Johnson和Joshua Jones还介绍了怎样在SQL Server中操作父级和子级图表。

【TechTarget中国原创】

本篇文章主要是发现SQL Server数据存储的物理对象和原理,本文节选自《SQL Server数据建模开发者指南》,范围包括SQL Server 2005和2008。你将从本文中了解到各种数据类型、如何使数据主键和外键进行整合以及进行编码存储程序和参数的适当的步骤。作者Eric Johnson和Joshua Jones还介绍了怎样在SQL Server中操作父级和子级图表。

数据模型的物理原理

现在你已经有了一些用于构建数据模型的逻辑原理,我们再来看看这些物理原理。你可以用这些对象构建数据库。构建到物理模式中的大多数对象都基于你在逻辑模式中的对象。无论你用的是哪一种RDBMS,许多物理原理都是相同的。但是我们今天讨论的是SQL Server 2008中的一些有用的原理。了解SQL Server的性能对于你用它们来构建模式很重要。

在本章中,我们将详细讨论所有SQL Server对象,让你大致了解如何在物理模式中使用每一种对象。在第九章中你将会用到这些原理。

物理存储

首先,我们从能让你在数据库中存储数据的对象开始讨论。你就是在这些对象上建立其他东西的。特别是这些表、视图和数据类型。

表是用来建立模块的,这些模块上面还建立有关系型数据库。几乎所有的数据库都以表的形式结束。表由行和列构成。如实体中的单个实例,每行中储存的信息都是关于单个记录的。例如,在员工表中,每一行都存储了一个员工的信息。

表里的列存储的是表里这些行的信息。Employee表里的FirstName列存储的是所有的员工的名字。列映射还要归结于你的逻辑模式,并且就像逻辑模式一样,每个列都配置了一种数据类型。接下来的内容中我们会详细介绍SQL Server的数据类型。

当你在表中增加数据的时候,每个列必须包含数据(即使是空字符串)或指定一个NULL值。NULL就是完全没有数据。此外,你还能给每个列指定一个默认值。如果你没有指定一个值就增加了数据,那么你就可以用默认值。默认值可以是一个固定值,如给在数字列中设置值为12,或者是返回合适的数据类型值的一个函数。如果你没有指定默认值,还在没有指定列值得情况下插入了数据,SQL Server就会插入一个NULL。如果列中不允许NULL值,你的数据插入就会失败。

你可以在应用软件中将表当作独立的电子表格,如Microsoft Excel。事实上,一个Excel电子表格就是一个表。但是Excel 不是关系型挂办理系统。数据库只不过就是存储信息的表的集合。当然,在数据库中还有一些其他的对象,但是没有这些标你就没有任何数据。用Transact-SQL,也叫T-SQL,你就能在表中操控这些数据。四种基本的数据操作语言(DML)语句定义如下:

  • SELECT::允许用户在一个或多个表中检索数据
  • INSERT:允许用户在表中增加数据
  • UPDATE:允许用户在表中改变数据
  • DELETE:允许用户从表中迁移数据


  SQL Server怎样储存表

除了要理解表的定义以外,了解SQL Server怎样存储这些表也同样重要,你的列中存储的这些数据类型将命令你如何在磁盘上存储该表,因此也会直接影响到你的数据库性能。SQL Server的一切都存储在页面上。8K型连续分配的信息页面都在磁盘上,根据页面上内容的不同就有不同的页面。对于我们来说,我们关注的是数据页面,即存储表数据的页面。你增加到表中的每行都存储在页面上。并且根据行中的数据大小,一个行既能和其他的行一起存储,也能存储在自己的页面上。

在SQL Server 2005之前,数据和单独行的整个的占用空间不能超过8,060字节(8K)。这是在你设计表的时候你需要考虑、解决的一个硬性的界限。从某种意义上来说,SQL Server 2005中可以克服这个界限。现在,如果你的行已经超过了8,060字节,SQL Server就会将一个或者多个可变长度列迁移到一个新的页面上,只留下一个24字节大小的指针。这并不是说对你的行大小没有限制,你也不需要使你的行大小大于8,060字节。为什么不呢?首先,注意我们说SQL Server将要迁移可变长度列。这就是说你的固定列长度还是不能超过8,060字节。此外,该行的主要数据页面还是不能超过8K。还记得24字节大小的指针吗?从理论上说在主页面上你的指针不能超过335个。如果表里有336列varchar(8000),看起来就很怪。

如果SQL Server在幕后管理所有的东西,那你为什么还要关注呢?理由如下:尽管在你超越了8K的限制之后,SQL Server将可变长度范围迁移到新页面上,结果和分段硬件驱动很类似。你在访问的时候需要组合大量的数据,这样自然就增加了处理的时间。作为数据模型创建者,由于考虑到性能你就需要让行的大小小于8K。对于这一点来说,也有一些例外,这些内容我们在讨论数据类型的时候会详细谈到。记住在SQL Server处理存储和页面的方式会比我们在这里讨论的要复杂多了,但是你的数据模型不会影响其他的变量,它更可能会影响表的大小。

 
查看全文
 
 
 
 
 

SQL Server数据库设计与建模

 
如果把商业现货(COTS)数据建模工具与定制的数据建模应用相比,会发现它们在数据建模方面有很大的差别。
 
使用SQL Server Analysis Services MDX语句,可以很容易地实现像这种具有父子维关系类型的层次结构。
 
SQL Server 2005 中的父子维,解决了如何处理在一个表当中一些记录与本表中其它记录相关联的这样一个常见业务问题。
 
一个范围标记了刻度的一个特定区域,它有助于突出特定的值。例如,在一个间隔为1到10的刻度中,我们可能会考虑添加一个从8到10的范围来突出这些目标数值。
 
现在,双子星项目已经更名为Microsoft PowerPivot,DBA及开发人员可以将目光再转向另外一个SQL Server 2008 R2的功能:Project Madison。
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录