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

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

建模时,了解每个数据类型所需要的空间很重要。相对需要4个字节的数据类型来说,需要2个字节的数据类型就和它没有很大的区别。但是如果你在一百万或十亿行上增加2个字节,你就需要另外10个或者100个十亿字节的存储器。   SQL Server 2008有允许SQL Server存储引擎将数据压缩到行和页面里的功能,部分功能在SQL Server 2005服务包2中已经提到。

但是这一功能在企业版中受到了限制,并且更多地与行政相关。你对数据存储需求的估计要基于我们刚才谈到的数据,并且还要控制在没有被压缩的存储空间范围内。将数据压缩到数据库里面也就意味着,在数据库建成以后,数据库管理员要将和数据库开发人员……

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

建模时,了解每个数据类型所需要的空间很重要。相对需要4个字节的数据类型来说,需要2个字节的数据类型就和它没有很大的区别。但是如果你在一百万或十亿行上增加2个字节,你就需要另外10个或者100个十亿字节的存储器。

  SQL Server 2008有允许SQL Server存储引擎将数据压缩到行和页面里的功能,部分功能在SQL Server 2005服务包2中已经提到。但是这一功能在企业版中受到了限制,并且更多地与行政相关。你对数据存储需求的估计要基于我们刚才谈到的数据,并且还要控制在没有被压缩的存储空间范围内。将数据压缩到数据库里面也就意味着,在数据库建成以后,数据库管理员要将和数据库开发人员通力协作。我们来看一下SQL Server 2008中能够用到的数据类型。

  数字型数据类型

  我们的数据库要存储我们每天用到的各种数据。每一个数据都是唯一的,都要求我们存储各种不同的数据块。数据之间的区别和要求表示SQL Server能够支持11种数字数据类型。以下对SQL Server中可用的数字型数据类型的回顾。同样,表3.1是对每种数据类型的详细说明。

  表3.1 Numeric数据类型

数据类型

值范围

存储大小

bigint<?xml:namespace prefix = o />

–9,223,372,036,854,775,808 through 9,223,372,036,854,775,807

8 bytes

bit

0 或 1

1 byte (minimum)

decimal

由精度和刻度决定

5–17 bytes

float

–1.79E+308 through –2.23E–308, 0,

4 or 8 bytes

int

–2,147,483,648 to 2,147,483,647

4 bytes

money

–922,337,203,685,477.5808 to 922,337,203,685,477.5807

8 bytes

numeric

由精度和刻度决定

5–17 bytes

real

–3.40E+38 to –1.18E–38, 0, and 1.18E–38 to 3.40E+38

4 bytes

smallint

–32,768 to 32,767

2 bytes

smallmoney

–214,748.3648 to 214,748.3647

4 bytes

tinyint

0 to 255

1 byte

  Int

  Int数据类型用来存储所有整数。Int不存储任何小数点后面的数字,也不会存储任何四舍五入到整数的小数。这类数据类型的存储范围为–2,147,483,648至2,147,483,647,并且每个int数据都需要占用磁盘上的4个字节。

  Bigint

  Bigint仅仅就是:一个比较大的整数。当你需要比int数据类型能支持的更大的数字时,你就可以使用bigint。使用bigint可以将范围从int 的20亿扩大,并且允许你存储范围大约为-900万的三次方到900万的三次方。(一百万的三次方就是1后面跟有18个零。)更大的数字就需要更多的存储空间,每个bigint数据需要8个字节。

  Smallint

  与Int数据类型相对的就是smallint。Smallint包括的数据范围为–32,768至32,767,并且只需要2个字节的存储空间。

  Tinyint

  Int以外的数据类型就是tinyint。它只需要一个字节的存储空间,并且能存储从0到255的数字,tinyint很适合状况列。注意tinyint是唯一一种不能存储负数的int数据类型。

  Bit

  Bit数据类型就相当于一个标记或者布尔算子。有效值0、1或NULL 组成用于存储或关闭、是或不是、或真或假、完美的bit数据类型。Bit数据类型存储空间更加复杂。存储1或0这样的数字只需要占用1个字节的磁盘空间,而bit数据的最小存储空间为1个字节。下表中,bit数据类型列中的数据都是集中存储。这就意味着当你的列中含有1个字节到8位的数据,它们总共就占用1个字节。如果列包含的数字是9到16位,它们就总共占有2个字节,依此类推。SQL Server也暗中将TRUE和FALSE字符串分别变成了数字1和0。


  Decimal和Numeric数据类型

  在SQL Server 2008中,Decimal和numeric数据类型基本上是一样的。SQL Server之前的版本并没有numeric数据类型,只在SQL Server 2005中才增加了这一项,这样在术语里才和RDBMS软件一致。这些数据类型包括小数点右边有小数的一些数据。在用decimal或numeric数据类型时,你可以指定精度和刻度。精度设定了该数据能够存储的数字。精度可以是从1到38的任何值,允许后面的小数包括从1到38的数字。刻度可以是从0到你设定的精度。例如,数字234.67的精度就是5、刻度为2。Decimal和numeric的存储需求空间可以根据精度来调整。表3.2就表示基于精度的存储需求空间。

  表3.2 Decimal和Numeric存储空间大小

精度

存储大小

1至9

5 bytes

10至19

9 bytes

20至28

13 bytes

29至38

17 bytes


  货币和货币值数据类型

  货币和货币值数据类型存储四个小数位的货币值。这两种类型数据之间的区别就是货币值的存储范围为–922兆到922兆,并且存储大小为8个字节;而货币值数据类型只包括从–214,748.3648到214,748.3647之间的值,存储大小为4个字节。从功能上说,这些数据类型和decimal、 numeric数据类型很相似,但是货币和货币值数据类型还能存储货币符号:$ (美元), ¥ (日元)或 £ (法郎)。

  Float和Real数据类型

  Float和Real数据类型为近似数据。每个数据包括科学计数法,由于缺少精度就造成了数据丢失。如果你记不住高中的化学班级,我们可以简单解释一些科学计数法。你基本上存储了一些值的子集,这些值都规定前面或后面可以跟多少个小数。所以你就可以将1,234,467,890存储为1.23E+9。也就是说1.23这个数据中的小数点可以向右移9位。你可以看到,在用这种方法存储数据时,你丢失了一些小数。在转换成科学计数法时,原数据(1,234,467,890)就变成了1,230,000,000。

  现在返回到数据类型。Float和real数据类型能用科学计数法存储,唯一的区别就是这些值得范围和存储大小。表3.1为这些数据类型值的范围。Real数据类型需要4个字节的存储空间,并且固定精度为7。你可以用这些浮点数据指定精度或整个数据的数字,即从1到53。存储空间大小为4个字节(精度小于25时)到8个字节(精度为25到53)。

翻译

April
April

相关推荐