IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁(yè)數(shù)據(jù)庫(kù)MSSQL → 分析 SQL Server 的內(nèi)存為何不斷增加

分析 SQL Server 的內(nèi)存為何不斷增加

時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)

當(dāng)SQL Server 數(shù)據(jù)庫(kù)引擎在 Microsoft? Windows NT? 或 Windows? 2000 上運(yùn)行時(shí),其默認(rèn)內(nèi)存管理行為并不是獲取特定的內(nèi)存量,而是在不產(chǎn)生多余換頁(yè) I/O 的情況下獲取盡可能多的內(nèi)存。為此,數(shù)據(jù)庫(kù)引擎獲取盡可能多的可用內(nèi)存,同時(shí)保留足夠的可用內(nèi)存以防操作系統(tǒng)交換內(nèi)存。

SQL Server 實(shí)例在啟動(dòng)時(shí)通常獲取8MB到12MB 的內(nèi)存以完成初始化過(guò)程。當(dāng)實(shí)例完成初始化后,就不會(huì)再獲取更多的內(nèi)存,直到用戶連接到該實(shí)例并開(kāi)始產(chǎn)生工作負(fù)荷。這時(shí),該實(shí)例根據(jù)需要不停地獲取內(nèi)存以支持工作負(fù)荷。隨著更多的用戶連接并運(yùn)行查詢,SQL Server 將獲取支持需求所需的額外內(nèi)存。該實(shí)例將繼續(xù)獲取內(nèi)存直到達(dá)到自身的內(nèi)存分配目標(biāo),并且直到達(dá)到該目標(biāo)的下限才會(huì)釋放任何內(nèi)存。

為了在不產(chǎn)生多余換頁(yè) I/O 的情況下獲取盡可能多的內(nèi)存,SQL Server 的每個(gè)實(shí)例都設(shè)置一個(gè)內(nèi)存獲取目標(biāo),直到計(jì)算機(jī)的可用物理內(nèi)存在4MB到10MB的范圍內(nèi)。之所以選擇該范圍是因?yàn)闇y(cè)試表明 Windows NT 和 Windows 2000 都有最小內(nèi)存交換,直到內(nèi)存分配等于可用物理內(nèi)存減去4MB。工作負(fù)荷處理任務(wù)重的 SQL Server 實(shí)例保留的可用物理內(nèi)存為范圍的較低端 (4MB);工作負(fù)荷處理任務(wù)輕的實(shí)例保留的可用物理內(nèi)存為范圍的較高端 (10MB)。

SQL Server 實(shí)例的目標(biāo)隨工作負(fù)荷的改變而變化。當(dāng)更多的用戶連接并產(chǎn)生更多的工作時(shí),該實(shí)例傾向于獲取更多的內(nèi)存以使可用的內(nèi)存保持在4MB 的限制以下。當(dāng)工作負(fù)荷減輕時(shí),該實(shí)例將其目標(biāo)調(diào)整為10MB的可用空間,并釋放內(nèi)存給操作系統(tǒng)。將可用空間量保持在10MB與4MB之間可防止 Windows NT 或 Windows 2000 過(guò)多執(zhí)行換頁(yè)操作,同時(shí)使 SQL Server 得以獲得盡可能最大的高速緩沖存儲(chǔ)器而不至引起額外的交換。

實(shí)例的目標(biāo)內(nèi)存設(shè)置與數(shù)據(jù)庫(kù)緩沖池的頁(yè)相對(duì)于可用池大小的需求有關(guān)。在任何即時(shí)點(diǎn),緩沖區(qū)頁(yè)的總需求取決于滿足所有當(dāng)前執(zhí)行的查詢所需的數(shù)據(jù)頁(yè)數(shù)。如果相對(duì)于高速緩沖存儲(chǔ)器內(nèi)的頁(yè)數(shù),數(shù)據(jù)頁(yè)的需求很大,則當(dāng)前在緩沖區(qū)內(nèi)的每一頁(yè)很可能在相對(duì)較短的時(shí)間內(nèi)由新頁(yè)替換。這可由"緩沖區(qū)管理器"對(duì)象的"頁(yè)生命期"性能計(jì)數(shù)器來(lái)度量。對(duì)于相對(duì)較小的緩沖區(qū)有較高需求的情況將生成短生命期,而純粹的影響就是使 I/O 增加,因?yàn)樵陧?yè)可由多個(gè)邏輯讀取引用之前往往要被重寫(xiě)。為減輕這個(gè)問(wèn)題,數(shù)據(jù)庫(kù)引擎可以獲取更多的內(nèi)存以增加高速緩沖存儲(chǔ)器的大小。當(dāng)頁(yè)生命期長(zhǎng)時(shí),數(shù)據(jù)庫(kù)引擎將可用內(nèi)存定位于目標(biāo)的高端 (10MB);而當(dāng)頁(yè)生命期短時(shí),數(shù)據(jù)庫(kù)引擎定位于目標(biāo)范圍的低端 (4MB)。

隨著其它應(yīng)用程序在運(yùn)行 SQL Server 實(shí)例的計(jì)算機(jī)上啟動(dòng),它們消耗內(nèi)存致使可用物理內(nèi)存量降到 SQL Server 的目標(biāo)以下。SQL Server 實(shí)例于是從其地址空間釋放足夠內(nèi)存,以使可用內(nèi)存量回到 SQL Server 的目標(biāo)。如果有其它應(yīng)用程序停止運(yùn)行而使可用內(nèi)存增多,SQL Server 實(shí)例將增加其內(nèi)存分配大小。SQL Server 可以每秒釋放并獲取幾MB字節(jié)的內(nèi)存,這使它得以根據(jù)內(nèi)存分配變化作出快速調(diào)整。

你可以通過(guò)設(shè)置允許SQL Server可以使用的最大內(nèi)存來(lái)做限制:

1、最小和最大服務(wù)器內(nèi)存的影響。

2、min server memory 和 max server memory 配置選項(xiàng)建立由 SQL Server 數(shù)據(jù)庫(kù)引擎使用的內(nèi)存量的上限和下限。數(shù)據(jù)庫(kù)引擎并不立即獲取 min server memory 中指定的內(nèi)存量。數(shù)據(jù)庫(kù)引擎啟動(dòng)時(shí)只使用初始化所需的內(nèi)存。隨著數(shù)據(jù)庫(kù)引擎工作負(fù)荷的增加,它將繼續(xù)獲取支持工作負(fù)荷所需的內(nèi)存。數(shù)據(jù)庫(kù)引擎直到到達(dá) min server memory 中指定的內(nèi)存量才會(huì)釋放任何所需的內(nèi)存。一旦到達(dá) min server memory,數(shù)據(jù)庫(kù)引擎將使用標(biāo)準(zhǔn)算法(使操作系統(tǒng)的可用內(nèi)存保持在 4 MB 到 10 MB 之間)獲取和釋放所需內(nèi)存。唯一的區(qū)別是數(shù)據(jù)庫(kù)引擎從不將內(nèi)存分配降到 min server memory 所指定的水平下,也從不獲取超過(guò)max server memory 所指定水平的內(nèi)存。

3、數(shù)據(jù)庫(kù)引擎獲取的內(nèi)存量完全取決于放置在實(shí)例上的工作負(fù)荷。不處理很多請(qǐng)求的 SQL Server 實(shí)例可能永遠(yuǎn)達(dá)不到 min server memory。

如果為 min server memory 和 max server memory 指定相同的值,則一旦分配給數(shù)據(jù)庫(kù)引擎的內(nèi)存達(dá)到該值,數(shù)據(jù)庫(kù)引擎將停止動(dòng)態(tài)釋放和獲取內(nèi)存。

如果在運(yùn)行 SQL Server 實(shí)例的計(jì)算機(jī)上頻繁啟動(dòng)或停止其它應(yīng)用程序,啟動(dòng)這些應(yīng)用程序所需的時(shí)間可能會(huì)因 SQL Server 實(shí)例分配和釋放內(nèi)存而延長(zhǎng)。另外,如果 SQL Server 是幾個(gè)在一臺(tái)計(jì)算機(jī)上運(yùn)行的服務(wù)器應(yīng)用程序中的一個(gè),系統(tǒng)管理員可能需要控制分配給 SQL Server 的內(nèi)存量。在這些情況下,可以使用 min server memory 和 max server memory 選項(xiàng)控制 SQL Server 可以使用的內(nèi)存量。

如何設(shè)置固定的內(nèi)存量(企業(yè)管理器),先設(shè)置固定的內(nèi)存量然后再展開(kāi)一個(gè)服務(wù)器組。右擊一個(gè)服務(wù)器,再單擊"屬性"。單擊"內(nèi)存"選項(xiàng)卡。單擊"使用固定的內(nèi)存大小 (MB)",然后將固定內(nèi)存滑塊放在適當(dāng)?shù)奈恢谩?/p>

說(shuō)明:如果使用默認(rèn)設(shè)置,則 Microsoft? SQL Server? 將動(dòng)態(tài)配置內(nèi)存。這是由SQL Server的內(nèi)存管理機(jī)制決定的。

關(guān)鍵詞標(biāo)簽:SQL Server

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門文章 淺談JSP JDBC來(lái)連接SQL Server 2005的方法 淺談JSP JDBC來(lái)連接SQL Server 2005的方法 SqlServer2005對(duì)現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟 SqlServer2005對(duì)現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟 sql server系統(tǒng)表?yè)p壞的解決方法 sql server系統(tǒng)表?yè)p壞的解決方法 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫(kù)用戶、角色、架構(gòu)的關(guān)系 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫(kù)用戶、角色、架構(gòu)的關(guān)系

相關(guān)下載

    人氣排行 配置和注冊(cè)O(shè)DBC數(shù)據(jù)源-odbc數(shù)據(jù)源配置教程 如何遠(yuǎn)程備份(還原)SQL2000數(shù)據(jù)庫(kù) SQL2000數(shù)據(jù)庫(kù)遠(yuǎn)程導(dǎo)入(導(dǎo)出)數(shù)據(jù) SQL2000和SQL2005數(shù)據(jù)庫(kù)服務(wù)端口查看或修改 修改Sql Server唯一約束教程 SQL Server 2005降級(jí)到2000的正確操作步驟 sql server系統(tǒng)表?yè)p壞的解決方法 淺談JSP JDBC來(lái)連接SQL Server 2005的方法