SQL Server啟動時會嘗試去取得最大可用的記憶體空間當作cache使用
如愛因斯坦,它會自動調節記憶體使用空間,不致於導致系統檔機。
是的,mssql 的預設就是你有多少Ram 他就會吃掉多少Ram
不過他會自行調節,所以不用擔心他.
通常資料庫主機只會用做資料庫服務, 並將主機的記憶體大部份配置給上面的資料庫服務(Oracle, MS-SQL...), 以換取資料庫較好的效能應用, 我猜樓主可能是有放其他的服務(Web...)所以會覺得用太多?! 老實說商用的, 我是覺得基本標配應該是8G up...
jer5173提到:
一個資料庫3GB~那放6個資料庫~記憶體就吃光了..
所以, 這句話的意思, 就是說: 你認為, 資料庫應該要被全部載入到記憶體內操作, 才是正常的?
是不是寫軟體的人, 對資料庫伺服器都有這樣的期待, 覺得只要全部放到記憶體, 就可以不用去管效能的事了; 所以通常寫程式的人, 都不願意花時間去做 SQL Query 的最佳化調校?
雷大神教訓得是....
大神~認為是出在SQL Query 的問題上嗎
所以那一個資料庫會達到3GB記憶體的使用量~其實是有問題的嗎?
資料庫應該要被全部載入到記憶體內操作, 才是正常的?
我並不是這麼想的~我是看到資料庫怎麼會耗那麼多~以前放在4GB的機子上~記憶一直維持在1~2GB左右~這次為了4GB的機子多點記憶體空間~才把他移出來~只是沒想到他實際要耗到3GB的量
SQL Server的最大與最小伺服器記憶體使用量
最小伺服器記憶體:當SQL Server啟動時,即向OS領用這麼多記憶體,作為Cache使用,所以正常狀況下工作管理員裡頭看到的SQL Server佔用記憶體,不會小於這個值
最大伺服器記憶體:當原先配置的記憶體不敷使用時,在不超過這個設定值的情況下,會嘗試向OS要到更多記憶體,以作為cache使用。
我沒有要教訓人的意思, 只是剛好藉這個例子, 希望寫程式的人都能夠多想想對硬體資源的使用, 是否達到有效的地步?
我曾經看過一個跑報表的程式, 每次執行都會引發 12 次 Full Table Scan, 他的 DB 有 400多 GB, 這樣掃 12 次, 那個報表要等到何時才能見天日?
但是寫那個程式的人, 卻一點也不想改善自己的程式技巧 (其實他只要改幾行 SQL Query 就可以降到2次 Full scan 以下; 我來寫的話, 搞不好一次都不用), 只會一昧地將效能問題推給硬體, 要公司花錢提升硬體來配合他的爛程式? 這種丟到水裡去的錢, 我怎麼能叫公司花得下去?
問題是, 這種人還不少, 窩藏在各公司的角落裡....
這種程式,屢見不鮮....
經常看到的是....SELECT * FROM xxxx
然後....再用自己寫的程式去抓前5筆資料....
不然就是.....SELECT * FROM yyyy
再一筆筆資料去過濾資料