磁盘空间使用关乎SQL Server性能

『 更新时间:2008-4-13 』『 字体:变小 变大 』『 作者:佚名 | 来源:互联网

  当你要定义某字段来存储一个整数值时,你需要考虑你的应用程序需要的所有可能出现的值。如果你的字段只需要表示一个10以下的集,取值范围从0到9,那你就应该选择使用TINYINT字段。 如果你选择其他的整数数据类型就会大量浪费磁盘存储空间。

  我们经常碰到带有ID字段的表,这一字段作为自动增长的identity字段来定义。当创建identify字段,要确定数据类型时,你需要考虑该表最多能达到多少行。如果少于10000行,那么你应该选择SMALLINT数据类型,而不用INT类型,这样可以节省大量磁盘空间。人们往往习惯性地把所有的identity字段都定义为INT数据类型,甚至就算表最多只有几行的时候也这样做。当你为identity字段定义数据类型时,一定要选择合适的整数数据类型。

  还有一种数据类型可以用来节省磁盘空间,那就是BIT数据类型。BIT数据类型只能用来存储1或0的值。BIT数据类型最适合拿来存储TRUE/FALSE条件值。由于存储的最小单位是一个字节,所以单个字节可以存储八种不同的BIT字段。如果你需要记录TRUE/FALSE或 0/1类型的条件值时,最好选择BIT数据类型,而不要选择其他的整数数据类型。当你的表中只有单个BIT数据类型字段时,你可以把它定义为BIT,虽然TINYINT占用相同的磁盘存储空间,这是因为单个BIT数据类型只要求1字节的空间。当你在一个表中有很多BIT数据类型字段时,BIT就比TINYINT更能节省磁盘空间了。

  DATETIME是另外一个常常被误用而导致磁盘空间浪费的数据类型。这里有两种不同的日期数据类型:SMALLDATETIME和DATETIME。就像其他的数据类型一样,这两种不同的数据类型对存储字节数的要求也不相同。SMALLDATETIME数据类型要求2字节存储空间,存储值的日期范围从1900年1月1日开始到2079年6月6日,而时间部分只能精确到分钟。DATETIME数据类型存储赋值时占用4字节存储空间,支持的日期范围从1753年1月1日到9999年12月31日,而时间部分可以精确到3毫秒。如果你的应用程序只需要存储当前的日期或不久的将来的日期(不超过2079年),而且你不需要时间部分,那么使用SMALLDATETIME字段数据类型才是正确的选择。假设程序并不需要把时间精确到分钟以下,那绝大部分处理日期的应用程序都可以利用SMALLDATETIME数据类型来节省空间。当你的应用程序需要存储秒以下的时间,或者存储的日期早于1900年或远于2079年,那就必须使用 DATETIME数据类型了。

  有时候,人们利用UNIQUEIDENTIFER数据类型来存储ID字段。这种数据类型产生一个GUID(全局唯一标志符),并占用16字节的存储空间。当你要为某独特列创建唯一值时,这是最佳选择。使用这种数据类型的一个普遍原因是,当你进行复制时,UNIQUEIDENTIFIER字段在两个数据库中都是唯一的。这里提到这种数据类型是因为如果你把这种数据类型用在非复制环境中,就会浪费磁盘空间,在非复制环境中应该使用某种整数数据类型来代替UNIQUEIDENTIFIER,以便节省磁盘空间。

  有一些应用程序使用MONEY和SMALLMONEY数据类型来存储货币数量值。这两种数据类型也占用的磁盘空间大小也不一样。SMALLMONEY只占用4字节存储空间,存储值范围从214748.3538 到214748.3647,而MONEY数据类型需要占用8字节空间,存储值范围从-922337203685477.5808到922337203685477.5807。如果你的应用软件存储的货币交易额一般不超过200000,那么你可以选择SMALLMONEY数据类型,这样记录每次交易额都可以节省4字节的空间。

  二进制数据可以用两种不同的数据类型来存储:BINARY和VARBINARY。这两种数据类型的关系类似于CHAR和VARCHAR的关系。也就是说,BINARY数据类型是固定长度的,而VARBINARY的长度是可变的。就像VARCHAR数据类型一样,VARBINARY数据类型存储长度除了数据的实际长度外还增加了2字节,以便SQL Server确定VARBINARY数据的实际长度。如果你想要长度可变的二进制字符串,那VARBINARY数据类型无疑会为你节省大量磁盘空间。

  结论

  使用了不合适的数据类型,会让SQL Server动用额外的磁盘空间来存储给定的值,这样不仅浪费磁盘空间,而且会引发性能问题。无论什么时候,你都应该挑选能满足给定字段的算有可能组合而使用的少磁盘空间又是最少的数据类型。

上一页  [1] [2] 

【点击数:】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口

关文章

您的姓名:
评分等级:
1分 2分 3分 4分 5分
评论内容:
1、严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
2、用户需对自己在使用金石网服务过程中的行为承担法律责任。
3、本站管理员有权保留或删除评论内容。
4、评论内容只代表网友个人观点,与本网站立场无关。
  • 金石网
  • | 设为首页 | 加入收藏 | 联系我们 | 版权申明 | 友情链接 | 站点地图 | 网站帮助 | 网站留言 | 广告服务 |
  • Copyright © 2001-2008 KingsNet.biz All Rights Reserved. 闽ICP备05026663号
  • 返回网站顶部