SQL Server占用內(nèi)存的解決方法_Mssql數(shù)據(jù)庫教程
推薦:解析 SQL Server 2008 的精妙之處本文介紹了SQL Server 2008里的一些新的特點以及在試用過程中發(fā)現(xiàn)的一些精妙之處,大家一起來看看吧。 安裝 SQL Server 2008的設(shè)置和安裝也有所改進(jìn)。配置數(shù)據(jù)和引擎位已經(jīng)分開了,所以它使創(chuàng)建基本的未配置系統(tǒng)的磁盤圖像變得可能了,它使分布到多個服務(wù)器
經(jīng)�?匆娪腥藛�,MSSQL占用了太多的內(nèi)存,而且還不斷的增長;或者說已經(jīng)設(shè)置了使用內(nèi)存,可是它沒有用到那么多,這是怎么一回事兒呢?
首先,我們來看看MSSQL是怎樣使用內(nèi)存的。
最大的開銷一般是用于數(shù)據(jù)緩存,如果內(nèi)存足夠,它會把用過的數(shù)據(jù)和覺得你會用到的數(shù)據(jù)統(tǒng)統(tǒng)扔到內(nèi)存中,直到內(nèi)存不足的時候,才把命中率低的數(shù)據(jù)給清掉。所以一般我們在看statistics io的時候,看到的physics read都是0。
其次就是查詢的開銷,一般地說,hash join是會帶來比較大的內(nèi)存開銷的,而merge join和nested loop的開銷比較小,還有排序和中間表、游標(biāo)也是會有比較大的開銷的。
所以,用于關(guān)聯(lián)和排序的列上一般需要有索引。
再其次就是對執(zhí)行計劃、系統(tǒng)數(shù)據(jù)的存儲,這些都是比較小的。
我們先來看數(shù)據(jù)緩存對性能的影響,如果系統(tǒng)中沒有其它應(yīng)用程序來爭奪內(nèi)存,數(shù)據(jù)緩存一般是越多越好,甚至有些時候我們會強行把一些數(shù)據(jù)pin在高速緩存中。但是如果有其它應(yīng)用程序,雖然在需要的時候MSSQL會釋放內(nèi)存,但是線程切換、IO等待這些工作也是需要時間的,所以就會造成性能的降低。這樣我們就必須設(shè)置MSSQL的最大內(nèi)存使用�?梢栽赟QL Server屬性(內(nèi)存選項卡)中找到配置最大使用內(nèi)存的地方,或者也可以使用sp_configure來完成。如果沒有其它應(yīng)用程序,那么就不要限制MSSQL對內(nèi)存的使用。
然后來看查詢的開銷,這個開銷顯然是越低越好,因為我們不能從中得到好處,相反,使用了越多的內(nèi)存多半意味著查詢速度的降低。所以我們一般要避免中間表和游標(biāo)的使用,在經(jīng)常作關(guān)聯(lián)和排序的列上建立索引。
分享:SQL Server 2005 遠(yuǎn)程調(diào)試存儲過程配置問題: 您工作的本機裝有Visual Studio 2005,局域網(wǎng)中有一臺SQL Server 2005數(shù)據(jù)庫服務(wù)器,你想通過本機遠(yuǎn)程調(diào)試SQL Server 2005服務(wù)器上的存儲過程。但是不知道如何配置或啟用遠(yuǎn)程調(diào)試?希望這篇文章對您有用。 對于數(shù)據(jù)庫和Visual Studio在同一機器的存儲
- sql 語句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫,提示 無法為該請求檢索數(shù)據(jù) 錯誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲過程參數(shù)的用法實例詳解
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫教程-SQL Server占用內(nèi)存的解決方法
。