SQL Server 2008中的数据压缩策略
在Types of data compression in SQL Server 2008这篇博客中, Sunil Agarwal提到了在SQL Server 2008中采用的两种压缩策略:
(1)以变长格式存储所有的定长数据类型。在本系列的上一篇文章中,我提到过在SQL Server 2005 SP2中提供的使用vardecimal类型来存储decimal/numeric数据类型以节省存储空间的问题,有兴趣的朋友可以参考上一篇文章最后列出的相关链接以获取更多信息。在SQL Server 2008中,微软将这一思想扩展到了所有的定长数据类型,例如integer,char,float类型。需要注意的是,虽然SQL Server 2008以变长格式存储所有的定长数据类型,但这只是一种存储的具体实现机制,并不会改变任何语义上的东西,任何客户的程序都不需要修改,因为它根本不关心也不必知道数据库内部具体的数据存储方式。
例子一:假设一个表中有一个32位整数列(integer),但是该列的值均在(0~255或-128~127)的范围内,那么SQL Server 2008就可以只用一个字节来存储该列的值,这与之前版本的SQL Server总是使用4个字节来存储该列相比,就节省了75%的空间。
例子二:假设一个表中有一个定长字符串列CHAR(100),在以前的SQL Server版本中,该列总是使用100个字节来存储(即使实际的字符串没有100个字节,也会在其后填充空格以达到长度正好为100)。但是在SQL Server 2008中,该列将根据实际字符串的长度来进行存储,例如"Hello"将只耗费5个字节存储空间,而"This is a longer string"将只需23个字节存储,分别带来95%和77%的存储空间的节省。
当然,在上述例子一中如果实际的数值变化范围超过了一个字节能够表示的范围,那么相应的压缩比就会降低;对于例子二也类似,如果实际的字符串长度接近100,那么压缩效果也会大大降低。这意味着压缩的效果将依赖于实际的数据值的分布,同时也依赖于表的架构定义,这可能不那么明显,但是想象一下上述的例子二,如果将列的定义改为CHAR(150),显然压缩的效果就更为显著。另外请注意,NULL值是不需要占用任何存储空间的(参见下面的行格式)。
在SQL Server 2008 Data Compression这篇博客中,博客作者Shailan Chudasama用一副图形象的说明了上述例子一描述的场景:
&nb
相关文档:
定义和用法
DATEDIFF() 函数返回两个日期之间的天数。
语法
DATEDIFF(datepart,startdate,enddate)
startdate 和 enddate 参数是合法的日期表达式。
datepart 参数可以是下列的值:
datepart
缩写
年
yy, yyyy
季度
qq, q
月
mm, m
年中的日
dy, y
日
dd, d
周
wk, ww
星期
dw, w
小时
h ......
如何让你的SQL运行得更快
---- 人们在使用SQL时往往会陷入一个误区,即太关注于所得的结果是否正确,而忽略了不同的实现方法之间可能存在的性能差异,这种性能差异在大型的或是复杂的数据库环境中(如联机事务处理OLTP或决策支持系统DSS)中表现得尤为明显。笔者在工作实践中发现,不良的SQL往往来自于不恰当的索引设计、 ......
作中数据库经常出错死锁,并且还要要求解决当前的死锁,问题多多;
参照CSDN,中国风(Roy)一篇死锁文章并改进了下;
/***********************************************************************************************************************
整理人:黑木崖上的蜗牛(lenolotus) 日期:2009.04.28
************ ......
先站在应用程序的角度说说它们的不同。
1、 直接拼 SQL
就像大家了解的那样,直接拼 SQL 带来了 SQL 注入攻击,带来了拼时些许的性能损失,但是拼不用添加 SqlParameter ,会少写很多代码——很多人喜欢直接拼,也许就因为这点。这种做法会把你拼好的 SQL 原样直接发送到 DB 服务器去执行。(注意类似 &rdquo ......
在SQL Server 2008下,网上以前流行的截断日志并收缩文件的方法不适合了,报语法错误。
同时因为我的数据库日志增长非常快,大概每天在1G以上,因此必须对其进行收缩。
经过在系统上的测试,感觉用SQL SERVER的维护计划更可行,现将操作方式简介如下:
注:下面的说明中也提到了使用差异备份,因为数据库文件增长也非 ......