對SQL Server數據庫中兩個細節的描述
以下的文章主要像大家講述的是SQL Server數據庫中的兩個細節,前段時間我看到了園子的朋友在對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一直沒法安裝成功,也沒法嘗試一下,明天準備做虛機再試一次,有相似經歷的朋友已經解決問題的還請指教一下。
上述的相關內容就是對關于SQL Server數據庫的兩個細節的描述,希望會給你帶來一些幫助在此方面。
【編輯推薦】