溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MSSQL內(nèi)存架構(gòu)及管理是怎樣的

發(fā)布時(shí)間:2021-11-29 13:46:54 來(lái)源:億速云 閱讀:151 作者:柒染 欄目:關(guān)系型數(shù)據(jù)庫(kù)

本篇文章給大家分享的是有關(guān)MSSQL內(nèi)存架構(gòu)及管理是怎樣的,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

1.  MSSQL內(nèi)存架構(gòu)

相比較Oracle,MSSQL的內(nèi)存區(qū)域并沒(méi)那么清晰,但和Oracle類似,MSSQL內(nèi)存區(qū)域大體也可以分為三個(gè)部分:buffer pool,query/workspace memory,其他cache/memory。下面,我們分別對(duì)這三個(gè)內(nèi)存區(qū)域做簡(jiǎn)要介紹:

1)  Bufferpool:

,case database_id

else db_name(database_id)

,count(*)*8/1024 as 'cached size (MB)'

group by db_name(database_id),database_id

2)  Query/workspacememory:

類似Oracle的PGA,MSSQL中,query memoy(也稱為workspace memory)用于存儲(chǔ)查詢執(zhí)行時(shí)哈希和排序期間的臨時(shí)結(jié)果。雖然大家都知道Oracle的PGA,但MSSQL的query memory也許并沒(méi)有太多文檔可讀,因此,也并沒(méi)有太多人清楚和知道,包括MSSQL的background process,memory components等內(nèi)部的一些細(xì)節(jié)和內(nèi)容,都是這種現(xiàn)狀,這也許和多方面因素相關(guān),這里不做太多的探討。但是,當(dāng)你仔細(xì)的查看MSSQL中SQL語(yǔ)句的查詢計(jì)劃時(shí),你會(huì)清楚的看到hash和sort等操作相關(guān)的query memory內(nèi)容。

Query memory空間可以占到buffer pool大小的25%和75%之間,但是,當(dāng)buffer pool不存在內(nèi)存壓力時(shí),query memory也可以進(jìn)一步增長(zhǎng)。對(duì)于所有代價(jià)低于3和query memory需求低于5M的小查詢,其query memory可以為之保留整個(gè)query memory5%的空間。單個(gè)查詢最多能占到整個(gè)query memory的20%以保證其他查詢的正常執(zhí)行,這點(diǎn)來(lái)說(shuō),與Oracle的PGA非常類似??梢酝ㄟ^(guò)以下SQL語(yǔ)句來(lái)獲取查詢語(yǔ)句的query memory及相關(guān)授權(quán)情況:

select session_id,sql_handle,grant_time,requested_memory_kb

  from sys.dm_exec_query_memory_grants

,sum(isnull(granted_memory_kb,0))granted_memory_kb

   from sys.dm_exec_query_memory_grants

3)  其他cache/memory:

MSSQL內(nèi)存區(qū)域,除了上面講述的buffer pool和query/workspace memory外,剩下的那就是其他cache/memory部分,該部分內(nèi)存用于MSSQL中所有不能放于前述兩個(gè)內(nèi)存區(qū)域的內(nèi)存組件。這部分雖然不像Oracle中定義的那么清晰,但基本相當(dāng)于Oracle中的SGA中除去buffer pool外的其他組件,這其中,主要是shared pool。該部分區(qū)域,雖然占據(jù)的內(nèi)存不多,但包含眾多的內(nèi)存組件,也很重要。我們可以通過(guò)以下SQL語(yǔ)句來(lái)查詢其相關(guān)信息:

select [name],[type],pages_kb,entries_count

select name,value,value_in_use,[description]

 where namelike'%server memory%'

       page_fault_count,memory_utilization_percentage,

       process_virtual_memory_low

以上就是MSSQL內(nèi)存架構(gòu)及管理是怎樣的,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI