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

日期: 2008-11-04 作者:searchSQL Server.com翻译:April 来源:TechTarget中国 英文

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

你可以用这些对象构建数据库。构建到物理模式中的大多数对象都基于你在逻辑模式中的对象。无论你用的是哪一种RDBMS,许多物理原理都……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

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处理存储和页面的方式会比我们在这里讨论的要复杂多了,但是你的数据模型不会影响其他的变量,它更可能会影响表的大小。

翻译

April
April

相关推荐