SQL Server小知識:Recovery Interval
其實有很多朋友都問到過Recovery Interval,有問這個是幹嗎的,有問怎麼調節這個值,所以今天寫一篇小Blog,一勞永逸。
眾所周知,SQL Server依靠Log來保證效能和資料永續性兩不耽擱。那麼我們來看一看SQL Server是如何處理我們的資料修改請求的。
首先我們的客戶端將資料修改指令遞交到SQL Server,SQL Server就會通過一系列的過程把資料從物理磁碟上讀取到記憶體中。
資料被讀取到記憶體中後,SQL Server會在記憶體中修改資料。當然大家就會想到,修改完了是不是要立即寫回到磁碟上呢?如果寫回去,那麼勢必會影響效能,如果不寫,那麼萬一系統崩潰了修改就會丟失,這一切就像我們在用WORD寫文件一樣。
SQL Server沒有采用這兩種笨辦法,SQL Server知道大多數情況下,大多數資料被訪問後一段時間內都會再次被訪問,因此SQL Server決定將資料保留在記憶體中。不過,如果這個時候系統崩潰了怎麼辦,又或者系統掉電了怎麼辦呢?SQL Server採用了一種變通的辦法,它將修改操作寫到了另外一個檔案中去,這個檔案叫做日誌。
那麼SQL Server就像這樣,我們每修改一個資料,SQL Server都會把這個資料寫到日誌檔案中去。如果系統崩潰了,SQL Server只要從這個日誌檔案中就可以知道我們執行了哪些操作,我們只要把這些操作再做一遍就可以恢復資料了。
嘿嘿嘿,好像我們沒有講到Recovery Interval麼。
是的,就要來了。雖然上面說的辦法不錯,不過那些修改過的資料不能一直放在記憶體中。除了記憶體是有限的之外,還有一個重要的原因,那就是SQL Server不能僅僅依賴日誌來保證資料的一致性。
SQL Server通常都會執行數個月之久而不重新啟動,這可不像我們用的筆記本。那麼如果它執行了三個月後突然崩潰了,天哪!難道我們要把三個月的操作重新做一遍?!當然不能這樣,Recovery Interval會控制這一切!
Recovery Interval會告訴SQL Server,如果要通過日誌裡面的操作進行恢復不能超過多少時間。那麼SQL Server就會看好這一切,當它發現日誌裡面的新的操作需要超過Recovery Interval的時間進行恢復的時候,SQL Server就像強制將記憶體那些被修改過的資料寫回到磁碟裡面去。
這樣我們就不用重新執行那三個月的操作了,通常都是短短的5分鐘,因為預設Recovery Interval是5分鐘。
那麼我們怎麼調節這個值呢?
Recovery Interval的值越長,那麼也就意味著萬一我們的系統崩潰了,我們就需要更長的時間進行恢復,不過也就以為那些被修改過的資料可以在記憶體中停留更長的時間,也就意味著我們可以寫磁碟寫的更少一些。
相反,如果Recovery Interval的值約短,那麼也就意味著萬一我們的系統崩潰了,我們就需要恢復的時間就更短,另外一方面也就意味著我們可以寫磁碟寫的更頻繁一些。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9079672/viewspace-418888/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server小知識:CheckPointSQLServer
- SQL Server小知識:Processor AffinitySQLServer
- Sql Server 知識點SQLServer
- SQL SERVER 知識筆記SQLServer筆記
- Sql Server 知識收集錄SQLServer
- SQL Server進行Crash RecoverySQLServer
- SQL Server 連線基礎知識(轉)SQLServer
- 關於SQL優化的小知識SQL優化
- webpack-dev-server小知識,onProxyReq是幹嘛的?WebdevServer
- Analysis Services基礎知識——深入SQL Server 2008SQLServer
- SQL知識點(+)SQL
- MY SQL 知識SQL
- 知識小匯
- iOS小知識iOS
- canvas小知識Canvas
- IPC小知識
- 感冒小知識
- baota小知識
- SQL Server的幾種恢復模式(recovery models)SQLServer模式
- SQL常備知識SQL
- pcl常用小知識
- java小知識點Java
- Python小知識Python
- js小知識點JS
- Spring小知識Spring
- Flex知識小結Flex
- 小知識點1
- JavaSE小知識(二)Java
- 前端小知識點前端
- mongo 小知識點Go
- javascript小知識點JavaScript
- PHP小知識點PHP
- Oracle知識小記Oracle
- 小知識總結
- SAP GUI小知識GUI
- SQL Server資料庫超級管理員賬號防護知識SQLServer資料庫
- MSSQL Server常用知識總結SQLServer
- SQL*Loader 常用知識SQL