Ⅰ 伺服器內存很大,sql進程佔用內存很小,查詢速度很慢怎麼解決
是不是內存分配不合理。如果是ORACLE 的話,內存有數據緩沖區,SGA,PGA等等,具體可以上網查一查怎麼設置。另外查詢速度很慢的原因非常多,從物理文件的I/O,內存管理,CPU使用,到SQL文都可能出問題。你只文這么一句話不可能幫你解決。
Ⅱ sql server 內存使用不高
登陸SQL Server。
通過Microsoft SQL Server Management Studio連接登陸SQL Server伺服器。
登陸成功後,選中伺服器右鍵屬性查看伺服器屬性,選中內存頁面,可以看到最大內存大小設置是3000M。
6
總結操作步驟:
1. 登陸SQL Server。
2. 登陸成功後,選中伺服器右鍵屬性查看伺服器屬性,選中內存頁面,可以看到最大內存大小設置是3000M。
3. 通過資源管理器可以看到 SQL server 進程使用的內存差不多是3000M。
4. 通過伺服器屬性中的內存頁面,把最大內存設為1024M點確認後,等一會,再通過資源管理器查看SQL server進程使用的內存會降1024M左右。
5. 通過伺服器屬性頁面,把最大伺服器內存設為合理的大小30000M。
謝謝閱讀,希望帶給你幫助。
Ⅲ 如何手動設置SQL server的最大內存佔用
第一種方法,將 min server memory 和 max server memory 設置為同一值。此值與達到該值後分配給 SQL Server 緩沖池的固定內存量相對應。
第二種方法,將 min server memory 和 max server memory 設置成一個內存范圍。這種方法在系統或資料庫管理員希望配置 SQL Server 實例,同時又要考慮在同一台計算機上運行的其他應用程序的內存需求時很有用。
min server memory 保證了 SQL Server 實例的緩沖池可用的最小內存量。SQL Server 不會在啟動時立即分配 min server memory 指定的內存量。不過,除非降低 min server memory 的值,否則當內存使用量由於客戶端負荷而達到該值後,SQL Server 不能從已分配的緩沖池中釋放內存。
max server memory 避免了 SQL Server 緩沖池使用的內存量多於指定的內存量,這樣剩餘的可用內存可以用來快速啟動其他應用程序。SQL Server 不會在啟動時立即分配 max server memory 指定的內存量。內存使用量會隨著 SQL Server 的需要增加,直到達到 max server memory 指定的值。除非提高 max server memory 的值,否則 SQL Server 不能超過此內存使用量。
Ⅳ sql 內存溢出
引起內存不足、內存溢出的 原因 有很多種,常見的有以下幾種:
1.內存中載入的數據量過於龐大,如一次從資料庫取出過多數據;
2.集合類中有對對象的引用,使用完後未清空,使得JVM不能回收;
3.代碼中存在死循環或循環產生過多重復的對象實體;
4.使用的第三方軟體中的BUG;
5.啟動參數內存值設定的過小;
內存溢出的解決方案 :
第一步 ,修改JVM啟動參數,直接增加內存。(-Xms,-Xmx參數一定不要忘記加。)
第二步 ,檢查錯誤日誌,查看「OutOfMemory」錯誤前是否有其它異常或錯誤。
第三步 ,對代碼進行走查和分析,找出可能發生內存溢出的位置。
重點排查以下幾點:
1.檢查對資料庫查詢中,是否有一次獲得全部數據的查詢。一般來說,如果一次取十萬條記錄到內存,就可能引起內存溢出。這個問題比較隱蔽,在上線前,資料庫中數據較少,不容易出問題,上線後,資料庫中數據多了,一次查詢就有可能引起內存溢出。因此對於資料庫查詢盡量採用分頁的方式查詢。
2.檢查代碼中是否有死循環或遞歸調用。
3.檢查是否有大循環重復產生新對象實體。
4.檢查對資料庫查詢中,是否有一次獲得全部數據的查詢。一般來說,如果一次取十萬條記錄到內存,就可能引起內存溢出。這個問題比較隱蔽,在上線前,資料庫中數據較少,不容易出問題,上線後,資料庫中數據多了,一次查詢就有可能引起內存溢出。因此對於資料庫查詢盡量採用分頁的方式查詢。
5.檢查List、MAP等集合對象是否有使用完後,未清除的問題。List、MAP等集合對象會始終存有對對象的引用,使得這些對象不能被GC回收。
第四步 ,使用內存查看工具動態查看內存使用情況。
Ⅳ 如何解決SQL Server資料庫佔用內存的問題 詳細�0�3
經常看見有人問,MSSQL 佔用了太多的內存,而且還不斷的增長;或者說已經
最大的開銷一般是用於數據緩存,如果內存足夠,它會把用過的數據和覺得
你會用到的數據統統扔到內存中,直到內存不足的時候,才把命中率低的數據給
清掉。所以一般我們在看statistics io 的時候,看到的physics read 都是0。
其次就是查詢的開銷,一般地說,hash join 是會帶來比較大的內存開銷的,
而merge join 和nested loop 的開銷比較小,還有排序和中間表、游標也是會
有比較大的開銷的。
所以用於關聯和排序的列上一般需要有索引。
再其次就是對執行計劃、系統數據的存儲,這些都是比較小的。
我們先來看數據緩存對性能的影響,如果系統中沒有其它應用程序來爭奪內
存,數據緩存一般是越多越好,甚至有些時候我們會強行把一些數據pin 在高速
緩存中。但是如果有其它應用程序,雖然在需要的時候MSSQL 會釋放內存,但是
線程切換、IO 等待這些工作也是需要時間的,所以就會造成性能的降低。這樣
我們就必須設置MSSQL 的最大內存使用。可以在SQL Server 屬性(內存選項卡)
中找到配置最大使用內存的地方,或者也可以使用sp_configure 來完成。如果
沒有其它應用程序,那麼就不要限制MSSQL 對內存的使用。
然後來看查詢的開銷,這個開銷顯然是越低越好,因為我們不能從中得到好
處,相反,使用了越多的內存多半意味著查詢速度的降低。所以我們一般要避免
中間表和游標的使用,在經常作關聯和排序的列上建立索引。
Ⅵ 為什麼SQL Server使用很少的內存
默認情況下,SQLServer會依據可獲得的系統資源動態改變它的內存需求。如果SQLServer需要更多的內存,它會要求操作系統確定是否有空閑的物理內存可用,並使用可用的內存。若SQLServer不再需要當前分配給它的內存,它就將內存釋放給操作系統。當SQLServer動態使用內存時,它要求系統定期地檢測可用的物理內存數量。SQLServer根據伺服器活動增大或收縮高速緩沖存儲器,以使可用物理內存保持在4MB到10MB之間。這就避免了系統進行換頁操作。[也就是說,這種情況下SQLSERVER本身不會使物理可用內存小於4M,如果比較長的時間內都小於4M的話,則要看一下是不是該伺服器上其它應用程序有問題]第二種情況:限制使用內存使用setworkingsetsize為sqlserver保留等於伺服器內存設置的物理內存空間。即使是sqlserver進程此時是空閑的,系統也不會將SQLServer頁交換出去。使用minservermemory保證sqlserver使用的最小內存。SQLServer啟動時不立即分配minservermemory中所指定的內存量。但是,當內存使用由於客戶端負荷而達到該值後,SQLServer將無法從已分配的緩沖池中釋放內存。使用maxservermemory則防止SQLServer使用多於指定數量的內存,這樣剩餘的可用內存可以快速運行其它應用程序。SQLServer啟動時不立即分配maxservermemory中所指定的內存。內存使用隨SQLServer的需要而增長,直到達到maxservermemory中所指定的值。SQLServer無法超過該內存使用值,除非增加maxservermemory值。第一種情況比較適用於伺服器專做sqlserver伺服器的情況,第二種情況適用於為在同一台計算機上運行的其它應用程序保留一定的內存以便於快速響應。(另:如果想動態分配sqlserver的內存,則不要設置setworkingsetsize選項,使用默認值即可。至於這些參數如何設置參見另外的文檔)監視SQLServer所使用的內存和計數器有助於確定:是否由於缺少可用物理內存存儲高速緩存中經常訪問的數據而導致瓶頸存在。如果是這樣,SQLServer必須從磁碟檢索數據。是否可通過添加更多內存或使更多內存可用於數據高速緩存或SQLServer內部結構來提高查詢性能。SQLServer需要從磁碟讀取數據的頻率。與其它操作相比,例如內存訪問,物理I/O會耗費大量時間。盡可能減少物理I/O可以提高查詢性能。對sqlserver伺服器內存的監視:Memory:AvailableBytes計數器表示當前進程可使用的物理內存位元組數。如果小於4M或更小,說明計算機上總的內存可能不足,或某個程序沒有釋放內存●Memory:PageFaults/sec每秒軟性頁面失效的數目(包括有些可以直接在內存中滿足而有些需要從硬碟讀取)較page/sec只表明數據不能在內存指定工作集中立即使用。如果該值偶爾走高,表明當時有線程競爭內存。如果持續很高,則內存可能是瓶頸。Memory:Pages/sec計數器表示由於缺頁處理而從磁碟取回的頁數,或由於缺頁處理而寫入磁碟以釋放工作集空間的頁數。●PageReads/sec每秒發出的物理資料庫頁讀取數。這一統計信息顯示的是在所有資料庫間的物理頁讀取總數。由於物理I/O的開銷大,可以通過使用更大的數據高速緩存、智能索引、更高效的查詢或者改變資料庫設計等方法,使開銷減到最小。●PageWrites/sec所發出的物理資料庫頁寫入的數目。若查看原帖>>
Ⅶ sql吃內存的問題,不管你的內存有多大,sql總是能佔用你90+%的內存,增加了內存,他還是佔用90+%的內存!
可以配置使用內存。
登錄SQL Server Management Studio
在實例名上右鍵-屬性-內存
在配置值中配置最大伺服器內存。