SqlServer性能优化——Slide Window
2010-03-31 00:00:00 来源:WEB开发网核心提示:虽然对数据库进行分区本身就能提高查询的性能,结合压缩,SqlServer性能优化——Slide Window,也能减少每次查询的IO,但如果数据持续增长,原理图 假设我们已经有一张活动表,分了四个区,过于久远的历史数据就成了一个包袱,它们从来不在查询结果中出现
虽然对数据库进行分区本身就能提高查询的性能,结合压缩,也能减少每次查询的IO。但如果数据持续增长,过于久远的历史数据就成了一个包袱,它们从来不在查询结果中出现,却或多或少的影响着每次查询的时间,成了一个挥之不去的阴影。此外,由于一个分区表的分区是有上限的(在2005中这一上限是 1000),我们也并不能在一张表上一直分区下去。所以在这种情况下,我们一般需要同时拥有两张表,一张保存了最近的数据,用来应付所有的查询,这张表要足够精简,在其上的查询要足够敏捷;同时有另一张表,保存所有过时的数据——我们并不能把过时的数据一删了事。
这里面的关键问题是,既然数据是随着时间持续增长的,那么当下有用的数据可能在几天后就过时了,那么怎样将这一部分过时的数据从活动表迁移到存档表,而且要保证迁移过程的快速、平稳呢?如果采用常规的Select、Insert、Delete来进行数据迁移,会有如下问题:
IO过大,效率必然较低。
迁移过程表被锁住,所有查询都会被搁置。
恢复困难,如果想将移出的数据再移回来,需要进行同样的操作,IO和锁表的问题同样存在。
那么很容易想到,利用之前提到的分区的Switch操作来解决迁移的问题,将整个分区而不是数据在活动表和存档表中迁移。由于Switch的元数据操作属性,这一几乎没有什么IO的操作效率极高,而且也不会锁表。基于以上方法进行的周期性自动化的数据迁移,就是Slide Window的基础。
原理图
假设我们已经有一张活动表,分了四个区,分别对应去年,今年一月、二月以及三月以后的数据:
[]
- ››SQLServer 游标简介与使用说明
- ››优化精髓之商业性网站常遇见的问题和误区
- ››优化增强您的Visual C++应用程序
- ››优化Windows 7错误报告弹出提示窗口
- ››优化您的 Apache Geronimo 发行版
- ››sqlserver游标概念与实例全面解说
- ››SqlServer性能优化——Slide Window
- ››优化迅游设置,台服魔兽全面加速
- ››性能更优越?教您了解64位Office 2010
- ››SqlServer性能优化:Partition(创建分区)
- ››SqlServer性能优化:Partition(管理分区)
- ››SQLServer2005中的uniqueidentifier数据类型与NEW...
更多精彩
赞助商链接