建模时,了解每个数据类型所需要的空间很重要。相对需要4个字节的数据类型来说,需要2个字节的数据类型就和它没有很大的区别。但是如果你在一百万或十亿行上增加2个字节,你就需要另外10个或者100个十亿字节的存储器。 SQL Server 2008有允许SQL Server存储引擎将数据压缩到行和页面里的功能,部分功能在SQL Server 2005服务包2中已经提到。
但是这一功能在企业版中受到了限制,并且更多地与行政相关。你对数据存储需求的估计要基于我们刚才谈到的数据,并且还要控制在没有被压缩的存储空间范围内。将数据压缩到数据库里面也就意味着,在数据库建成以后,数据库管理员要将和数据库开发人员……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属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)。
翻译
相关推荐
-
SQL Server 2005支持服务结束 升级何去何从
SQL Server 2005的支持就要结束了,就在2016年4月12日,SQL Server 2005的客户们应该升级了。
-
SQL Server 2005即将终止服务 你准备好了么?
2016年4月12日,微软将正式终止SQL Server 2005相关服务。微软正在终止扩展支持,这意味着不再有新特性更新,什么都没了。
-
SQL Server 2008将退出微软主流数据库支持
你的企业是否还在运行SQL Server 2008?请注意微软为SQL Server 2008提供的主流技术支持服务将于今年的7月8日正式结束。
-
解决SQL服务器提示属性IsLocked不可用于登录用户的错误
在SQL Server中,权限的分配很重要。特别是在用户数量众多的数据库里面,用户权限,架构的划分经常会导致权限之间的冲突,导致无法登陆。