淺談SQL Server 對于內存的管理[圖文]建站知識
導讀:1建站知識理解SQL Server對于內存的管理是對于SQL Server問題處理和性能調優的基本,本篇文章講述SQL Server對于內存管理的內存原網seo優化趨勢seo網站優化。
理解SQL Server對于內存的管理是對于SQL Server問題處理和性能調優的基本,本篇文章講述SQL Server對于內存管理的內存原理。
二級存儲(secondary storage)對于計算機來說,存儲體系是分層級的。離CPU越近的地方速度愉快,但容量越小(如圖1所示)。比如:傳統的計算機存儲體系結構離CPU由近到遠依次是:CPU內的寄存器,一級緩存,二級緩存,內存,硬盤。但同時離CPU越遠的存儲系統都會比之前的存儲系統大一個數量級。比如硬盤通常要比同時代的內存大一個數量級。
因此對于SQL Server來說,正常的生產系統所配置的內存通常不能裝載所有數據,因此會涉及到二級存儲,也就是磁盤。磁盤作為現代計算機系統中最后的機械存儲部件,讀取數據需要移動磁頭(具體關于磁盤的原理,可以看我之前寫的一篇文章),并且由于數據庫所訪問的數據往往是隨機分布在磁盤的各個位置,因此如果頻繁的讀取磁盤需要頻繁的移動磁頭,這個性能將會十分底下。
由計算機體存儲體系結構可以知道,計算機對于所有硬盤內數據的操作都需要首先讀取到內存,因此利用好內存的緩沖區而減少對磁盤IO的訪問將會是提升SQL Server性能的關鍵,這也是本篇文章寫作的出發點之一。
SQL Server引擎,一個自我調整的引擎
由于SQL Server過去一直面向是中小型企業市場的原因,SQL Server存儲引擎被設計成一個不需要太多配置就能使用的產品,從而減少了部署成本,但這也是很多人一直詬病的微軟開放的配置過少。而對于SQL Server如何使用內存,幾乎沒有直接可以配置的空間,僅僅開放的配置只有是否使用AWE,以及實例占用的最大或最小內存,如圖2所示。
而對于具體的SQL Server如何使用內存,例如分配給執行計劃緩存多少,分配給數據buffer多少,這些都無法通過配置進行調控。這也是很多其它技術的開發人員對于使用微軟技術的開發人員充滿優越感的原因,而在我看來,雖然SQL Server提供可控配置的地方很少,但是很多地方都可以在通曉原理的情況下進行“間接”的配置。這也需要了解一些Windows的原理。
SQL Server是如何使用內存的SQL Server存儲引擎本身是一個Windows下的進程,所以SQL Server使用內存和其它Windows進程一樣,都需要向Windows申請內存。從Windows申請到內存之后,SQL Server使用內存粗略可以分為兩部分:緩沖池內存(數據頁和空閑seo網站排名優化軟件頁),非緩沖內存(線程,DLL,鏈接服務器等)。而緩沖池內存占據了SQL Server的大部分內存使用。緩沖池所占內存也就是圖2最大最小內存所設置的,因此sqlservr.exe所占的內存有可能會大于圖2中所設置的最大內存。
聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-24 ,文章淺談SQL Server 對于內存的管理[圖文]建站知識主要講述淺談,內存,內存網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_7052.html