SQLServer記憶體資料寫入磁碟的方法比較

來源:互聯網
上載者:User

    眾所周知,SQLServer增刪改資料最先都是在記憶體中進行的,這可以大大加快資料操作的速度;當記憶體中的資料被修改了,而磁碟中的資料

還沒有被修改時,就產生了所謂的”髒頁“,SQLServer是如何同步記憶體和磁碟的資料的呢?以下三種方法就是為同步記憶體和磁碟資料而產生的。

 

LazyWrite(惰性寫入器):
   作用:
   1.管理SQLServer空閑記憶體:
    a. 定期檢查空閑緩衝列表的大小,當這個值過低的時候,它會掃描整個資料緩衝,將一段時間沒有使用的頁面老化(通過LRU演算法),釋放記憶體空間;
    b. 如果找到一段時間沒有被使用的髒頁,它會將其寫入磁碟,然後將這個頁面的記憶體空間標記為空白閑空間;
  
   2.協調Windows與SQLServer記憶體:
    a. 監視伺服器記憶體,如果Windows實體記憶體很少,它會從空閑緩衝列表中釋放記憶體給Windows;
    b. 在SQLServer負載很重時,它還會在分配給SQLServer的記憶體沒有達到最大伺服器記憶體閥值時,增加空閑緩衝列表的大小,以適應負載的需要。

CheckPoint:
   作用:檢查點是檢查點進程建立的一個時間點,在這個時間點,SQLServer可以確認所有提交的事物所做的修改都已經寫入磁碟,它是一個標記,
         這個標記是資料庫恢複的起始點,大約每分鐘運行一次,這樣在啟動資料庫時,確保資料庫在一分鐘內就能完成恢複操作;但是如果在這段
         時間內寫入日誌的資料不到10MB,SQLServer就不會自動發起檢查點。

         跟蹤標記(trace flag)3502在錯誤記錄檔中記錄檢查點的開始和結束位置。

    與LazyWrite比較,CheckPoint不會從緩衝中移出髒頁,CheckPoint進程的工作只是保證髒頁被寫入磁碟,並且在頁頭將緩衝中的這個頁面標記為
    乾淨的頁面。
 
EagerWrite:
    通常在BCP、SELECT INTO, WRITETEXT,UPDATETEXT,BULK INSERT等操作時發生,為了加快這些操作的速度,EagerWrite會管理資料頁

的建立和分配,這些操作不會等待所有的頁面建立完成後才將記憶體中的資料寫入到頁面中,而是以更高的優先順序邊建立邊將緩衝中的資料寫入頁面中,

以保證緩衝池有足夠的空間來完成這些操作。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.