SQL2014學習筆記3 記憶體優化表的事務

2021-06-21 16:06:21 字數 961 閱讀 8885

本想寫記憶體表的備份和還原,結果寫到一半發現涉及到事務的部分太多,所以單開一篇寫事務,篇幅會比較短,但這是理解記憶體表備份還原機制的基礎。

記憶體表分兩種,一種是只存在於記憶體中,和磁碟、日誌都沒半毛錢關係的記憶體表,這種表在備份還原時只會處理表結構而不處理資料。類似於tempdb中的表,不同之處就是重啟資料庫時前者保留表結構而後者渣都不剩。

另一種記憶體表則在磁碟中有對應的資料檔案做資料持久化,ms稱之為「資料和差異檔案」。這部分檔案是通過乙個叫「離線檢查點」的後台執行緒通過定時讀取事務日誌寫入資料的,so,它獲得的不是第一手的變更,而是日誌檔案裡記錄的變更。

再來說事務日誌與記憶體表的關係,說到這個關係又涉及到乙個2014新出的概念:延遲性事務。延遲性事務機制允許事務提交時通過設定指定的選項,選擇是否非同步寫入日誌。什麼意思呢?傳統的磁碟表是資料頁和日誌一起寫,當日誌寫成功後提交事務成功,這種機制下事務的執行時間取決於資料檔案更新(磁碟表是頁,記憶體表是記憶體位址)和事務日誌更新兩部分,當事務日誌的更新慢於資料檔案時就會拖累事務的提交速度。延遲性事務就是把這兩部分分開,資料檔案寫入完成後事務即成功,而日誌檔案的寫入則同時進行但不影響事務的提交。這種提交方式好處是減少可能的提交延遲時間,壞處是犧牲了一部分事務的完整性。

當延遲性事務配合記憶體表使用時,會使事務日誌對記憶體表效能的影響降到最低:記憶體的表的事務執行完全不受日誌影響,日誌非同步寫入後,檢查點執行緒定時更新到磁碟的資料檔案中。記憶體表的效能提高的1b,相應的事務完整性則略有犧牲。當資料庫崩潰時,沒寫入日誌的記憶體表變更將丟失。

延遲性事務有兩個地方指定:資料庫選項中的delayed_durability選項和事務提交時的with  delayed_durability

資料庫級別的選項可以指定延遲性事務關閉/可選/強制,只有可選時才會受commit選項的影響。

最後強調一下,當記憶體表不選擇使用延遲性事務時,可以認為它和磁碟表的事務完整性一致。

因此,對於我即將寫到的記憶體表備份和還原,涉及到的待久化內容就是:記憶體表定義、日誌檔案和資料檔案。

學習筆記 SQL SERVER2014記憶體資料庫

sql server2014支援記憶體資料庫功能。記憶體可以說是資料庫效能的生命線。理論上,如果記憶體足夠,sql server可以將所有的資料都裝載到記憶體裡,訪問 修改什麼的,都在記憶體中進行,只有在checkpoint的時候才寫回硬碟。只有記憶體不夠,資料庫才會被迫經常lazy write,換...

學習筆記 SQL SERVER2014記憶體資料庫

sql server2014支援記憶體資料庫功能。記憶體可以說是資料庫效能的生命線。理論上,如果記憶體足夠,sql server可以將所有的資料都裝載到記憶體裡,訪問 修改什麼的,都在記憶體中進行,只有在checkpoint的時候才寫回硬碟。只有記憶體不夠,資料庫才會被迫經常lazy write,換...

2014第3周五學習筆記

2014第3周五學習筆記 今天主要是思考 溝通 交流需求,晚上看到園子裡有幾篇好文章,寫一下自己從中學到的觀點和知識,而不再簡單的賦值摘錄網頁。首先第一篇,從登入框看前端頁面這篇文章,之前看標題以為這裡面應該沒多少東西,但真的看了文章才知道自己之前是多麼的無知。從中我認識到以下幾點 1.如何保持頁面...