為什麼SQLServer資料庫記憶體會不斷增加

2022-02-27 04:07:15 字數 1439 閱讀 4249

當 sql server 資料庫引擎在 microsoft® windows nt® 或 windows® 2000 上執行時,其預設記憶體管理行為並不是獲取特定的記憶體量,而是在不產生多餘換頁 i/o 的情況下獲取盡可能多的記憶體。為此,資料庫引擎獲取盡可能多的可用記憶體,同時保留足夠的可用記憶體以防作業系統交換記憶體。

sql server 例項在啟動時通常獲取 8 到 12 mb 的記憶體以完成初始化過程。當例項完成初始化後,就不會再獲取更多的記憶體,直到使用者連線到該例項並開始產生工作負荷。這時,該例項根據需要不停地獲取記憶體以支援工作負荷。隨著更多的使用者連線並執行查詢,sql server 將獲取支援需求所需的額外記憶體。該例項將繼續獲取記憶體直到達到自身的記憶體分配目標,並且直到達到該目標的下限才會釋放任何記憶體。

為了在不產生多餘換頁 i/o 的情況下獲取盡可能多的記憶體,sql server 的每個例項都設定乙個記憶體獲取目標,直到計算機的可用物理內存在 4 mb 到 10 mb 的範圍內。之所以選擇該範圍是因為測試表明 windows nt 和 windows 2000 都有最小記憶體交換,直到記憶體分配等於可用物理記憶體減去 4 mb。工作負荷處理任務重的 sql server 例項保留的可用物理記憶體為範圍的較低端 (4 mb);工作負荷處理任務輕的例項保留的可用物理記憶體為範圍的較高階 (10 mb)。

sql server 例項的目標隨工作負荷的改變而變化。當更多的使用者連線並產生更多的工作時,該例項傾向於獲取更多的記憶體以使可用的記憶體保持在 4 mb 的限制以下。當工作負荷減輕時,該例項將其目標調整為 10 mb 的可用空間,並釋放記憶體給作業系統。將可用空間量保持在 10 mb 與 4 mb 之間可防止 windows nt 或 windows 2000 過多執行換頁操作,同時使 sql server 得以獲得盡可能最大的高速緩衝儲存器而不至引起額外的交換。

例項的目標記憶體設定與資料庫緩衝池的頁相對於可用池大小的需求有關。在任何即時點,緩衝區頁的總需求取決於滿足所有當前執行的查詢所需的資料頁數。如果相對於高速緩衝儲存器內的頁數,資料頁的需求很大,則當前在緩衝區內的每一頁很可能在相對較短的時間內由新頁替換。這可由"緩衝區管理器"物件的"頁生命期"效能計數器來度量。對於相對較小的緩衝區有較高需求的情況將生成短生命期,而純粹的影響就是使 i/o 增加,因為在頁可由多個邏輯讀取引用之前往往要被重寫。為減輕這個問題,資料庫引擎可以獲取更多的記憶體以增加高速緩衝儲存器的大小。當頁生命期長時,資料庫引擎將可用記憶體定位於目標的高階 (10 mb);而當頁生命期短時,資料庫引擎定位於目標範圍的低端 (4 mb)。為了不影響效能,我的平台用了8g的記憶體.

隨著其它應用程式在執行 sql server 例項的計算機上啟動,它們消耗記憶體致使可用物理記憶體量降到 sql server 的目標以下。sql server 例項於是從其位址空間釋放足夠記憶體,以使可用記憶體量回到 sql server 的目標。如果有其它應用程式停止執行而使可用記憶體增多,sql server 例項將增加其記憶體分配大小。sql server 可以每秒釋放並獲取幾 mb 位元組的記憶體,這使它得以根據記憶體分配變化作出快速調整。

為什麼使用資料庫

儘管檔案系統可以解決不少問題,有些問題是檔案系統所無法 解決的,如果給檔案系統加上這些特性,那麼檔案系統也就成 為了乙個資料庫。1.資料的冗餘與資料不一致 重複資料多,而且對於分布式,有可能出現 資料無法同步的問題。2.資料訪問困難,資料孤立 因為資料儲存沒有採取同樣的格式,使得使 用統一的介面訪問...

什麼叫資料庫,為什麼要安裝資料庫?

有關資料庫有嚴格的定義,本文結合自己的理解,通俗簡短的介紹下資料庫 首先我們想一想,電腦的組成上有一大塊的硬碟是用來幹什麼的?用來存放資料的。這個硬碟就相當於乙個大型倉庫,裡面空空如也,就是乙個大的空著的空間。一般是誰能往裡面放置東西呢?各種軟體。然而每一種軟體存放資料的方式是不一樣的,比如對於同樣...

為什麼要學資料庫

資料庫系統 database system 是由資料庫及其管理軟體組成的系統。資料庫就是儲存資料的地方,穿鷗汀意義不包括檔案 資料庫是由兩部分組成 db資料庫本身,我們看不見的 資料庫管理系統 現在世界上資料庫分為三類 rdbms rdbms關聯式資料庫管理系統 relational databas...