前段时间看到了园子的朋友在讨论SQL Server的Paging Select问题,在感觉到有些朋友可能对SQL Server(2000以上版本的)的一些地方还不太清楚,这里分享一下SQL Server自2000版本后提供的一些特色处理方式:

TOP N排序

新的TOP N引擎可以减少以往先sort再top n的负载,当数据读入到Storage Engine时就先过滤出top n的记录,然后在对这些记录进行sort等操作,这样的设计可以在大多数情况下提升效率,缩短查询时间。

Merry-Go-Round Scans

胡百敬老师在他一本讲解性能调教的书中将其翻译为旋转木马式扫描,这个算法用于处理相同数据的重复扫描。例如我们有一页数据,两个用户都去查询它们,如果都是从page的开始部分进行scan,假设当user A scan到30%的时候user B开始scan操作,那么当user A进行到60%的时候user B刚好完成30%,这种设计可能会导致在扫描大型数据表的时候引起硬盘的剧烈震动!而采用Merry-Go-Round方式,当user A scan到30%的时候user B开始从A的当前位置scan,user A完成整个操作时user B完成了70%,然后再从页首开始scan剩下的30%,这样他们就使用相同的查询计划读取了部分数据。这种方式减少了大量在极端时间内先后查询相同的数据时,系统I/O来回读取的的情况,在增强读取速度和无序扫描的同时,也不需要同步了。

Katmai在这两方面有没有更好的改进还不知道,我的SQL Server 2008一直没法安装成功,也没法尝试一下,明天准备做虚机再试一次,有相似经历的朋友已经解决问题的还请指教一下。

posted on 2007-07-18 00:04  维生素C.NET  阅读(3294)  评论(12编辑  收藏  举报