iT邦幫忙

0

SQL 2005變慢

各位前輩好

小弟公司有一線上公文系統
是架設在SQL2005上,是透過Apache Tomcat4.0和J21.4.1去連結資料庫的!

這個架構我也剛接觸不是很懂
目前線上公文系統資料庫大約為4.1G
不過小弟一星期有清一次LOG檔(大約4G左右的大小),
伺服器配備如下
 Xeon E5335 4核心 2G *2(8M)
 記憶體 1G*4
 硬碟空間 750GB (RAID5 4+1 250G)
晚輩有去看系統管理員,RAM的使用量大約落在2.7G左右,並沒有滿載
CPU更是低
主機大約過年至今天沒有重開過!還是有別的TEMP檔要刪除,只刪除LOG檔好像只是防止硬碟容量不足,不知會不會影響連線速度!

請各位前提示一下!小弟目前卡在那裡!
在此獻上最高敬意!

10
raytracy
iT邦大神 1 級 ‧ 2011-05-16 14:11:45
最佳解答

super288提到:
RAM的使用量大約落在2.7G左右

這樣 RAM 應該就滿載了啦.....別以為你有 4GB RAM....

有很多 Xeon 的主機板, 在插到 4GB 的時候, 實際上只能使用 2.84GB, 如下:

你可以先嘗試將 SQL Server 的記憶體使用量, 限縮到 1GB, 看看這樣還會不會慢?

super288 iT邦研究生 5 級 ‧ 2011-05-16 17:11:52 檢舉


謝raytracy前輩的回覆
晚輩公司裡是用SQL 2005,我不知這樣調整對不對,SQL需要做什麼重啟嗎,還是確定之後就可以套用晚輩做的設定,

晚輩可以問一下SQL的運作原理嗎?
若我們的資料庫是4G,他所需要的RAM會在多少
因為公司還有ERP ,他資料庫才1.8G,可是我們RAM給他8G,他居然全用完光光
資料庫是以什麼原理去運作,晚輩只了解他會將資料放在RAM裡!
可是也不至於全部的RAM用光光!

請前輩給晚輩一點提示!
在此獻上最高敬意

raytracy iT邦大神 1 級 ‧ 2011-05-16 21:07:19 檢舉

super288提到:
晚輩公司裡是用SQL 2005,我不知這樣調整對不對,SQL需要做什麼重啟嗎,還是確定之後就可以套用晚輩做的設定,

可以, 調整完畢之後, SQL 必須重新啟動.

super288提到:
晚輩可以問一下SQL的運作原理嗎?
若我們的資料庫是4G,他所需要的RAM會在多少
因為公司還有ERP ,他資料庫才1.8G,可是我們RAM給他8G,他居...(恕刪)

其實, SQL 的預設行為是: 你有多少 RAM, 我都會把它吃光光, 只留 500MB 給系統...

所以, 手動限制 SQL 所能使用的 RAM, 可以解決 70% 以上的效能變慢問題...

SQL 需要多少 RAM? 這是跟很難回答的問題. 不過, 對大部分的商業應用來說: RAM 的用量, 跟您資料庫所占用的硬碟容量, 之間關係並不大; 反倒是跟您所下的 SQL Query 指令語法, 有很大的關係.

但是如果您的 Query 語法無法由您自己控制的話, 那就只能期待軟體廠商的工程品質....

樓下 insider 建議的方法 1. 是標準的軟體品質程序, 每個設計 SQL 語法的人, 都應該要先做過這樣的測試之後, 才可以把軟體交給客戶.
不幸的是, 國內土產 ERP 廠商, 大多沒有這樣做. 客戶抱怨慢, 就只會叫客戶去買更貴的硬體...毆飛

至於方法 2. 嘛.....您如果有預算的話, 我也不反對啦....開心

6
insider
iT邦研究生 5 級 ‧ 2011-05-16 17:56:44

Two approaches:

  1. Download : SQL Server 2005 Best Practices Analyzer (August 2008) and collect the information. Send the report to Microsoft Support center ( if the maintenance contract still vaild) to get solution.

  2. Ask RayTracy to give you consultancy Quote to provide on-site advice/service once get approval from your management.

6
charmmih
iT邦研究生 5 級 ‧ 2011-05-17 00:20:15
  1. 修改記憶體可以不用重開機, 這是我幫客戶約20GB大資料庫所規劃的記憶體, 參考一下

  2. 記憶體在資料庫主要是做系統物件的快取及資料緩衝及排序使用, 我的經驗是10GB以內資料量用1GB記憶體是很足夠的, 主要是你家SQL語法及索引要調整後, 效能才會出來....

參考資料是我調校的結果, 參考一下:

我要發表回答

立即登入回答