WEB开发网
开发学院数据库MSSQL Server SqlServer性能优化——Slide Window 阅读

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性能优化——Slide Window

1 2 3 4 5  下一页

Tags:SqlServer 性能 优化

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接