iT邦幫忙

0

緊急~資料庫主機處理速度問題

請問各位大大
小弟目前只是再公司IT部門實習,碰到以下狀況
目前作業環境為IBM System x3850 M2 (記憶體擴充到24GB CPU兩顆)
使用server 03 R2 Ent版搭 Win SQL 2000
硬碟 SAS 146GB 10000RPM x4 RAID 6
資料庫目前大小 36GB 資料目前約三萬多筆,預計未來會加入的約30%,但不至於超過十萬筆
以上是網管所設置,客戶端軟體Exact Globe
狀況為資料庫的速度過慢,clinet抱怨輸入資料、開啟資料需等待很久,於local端測試後,似乎是硬碟讀取速度不足所導致

今天Exact Globe人員到場處理後,也確定是硬碟速度不足,CPU、RAM、網路都ok
建議把硬碟換置成15000Rpm,然而這台主機只支援2.5"硬碟,去serverbank問後,他說只有3.5"才有15000RPM

跟董事長報告後,他說那乾脆買台支援3.5"的硬碟來用好了,丟50萬預算給我去找主機

請問各位大大我需要重新購置主機嗎?還是只要把記憶體用上即可?
問題到底出在哪?需要更新SQL系統嗎?
明天正式的網管會裝server 03 DataCenter ,不知道有沒有用,然後RAID成4
請問大大們這樣作妥當嗎?
有沒有什麼建議?因為再使用上資料讀寫率實在太高了。

看更多先前的討論...收起先前的討論...
oxox iT邦新手 1 級 ‧ 2009-08-01 09:27:51 檢舉
在一樣 HDD RPM 的狀態下, 2.5 SAS 的 HDD速度確實相對慢...
146G 目前沒有 1.5K 的HDD, 您可以問一下 72G 的.. (資料其實不多,多顆HDD即可)

我自己是不會只有四顆HDD就跑RAID 6,頂多RAID 5吧,然後其中一棵是 熱備援..
在目前不換 SERVER/架構 的狀態下,增加HDD看看吧...
RAID 0/1 或許是解決RAID 6 慢的方法,但用在DB 是我自己比較不敢的方式。

您一開始提到的『server 03 R2 Ent』 不就是企業版?
而 SQL 2000 也是企業版嗎?
有設定SQL 去使用那麼多的記憶體嗎?
要用到那麼多記憶體,您需要 OS & SQL 都安裝正確版本喔...

---

50 萬可以買 3.5" 的 1.5K 新SERVER,確實是一個提升效能的方法..
但如果可以看看有沒有原始設計問題,最佳化一下(SQL指令,資料表配置等)
應該也是不錯的喔(兩個不衝突)。
ropw3721 iT邦新手 5 級 ‧ 2009-08-01 10:44:20 檢舉
SQL 有設定記憶體,目前上限設定22GB 下限5GB
但是似乎沒有用,由Ent 改成 Data Center版會比較順暢嗎?
因為在Local執行Exact Globe時,硬碟I/O也是高的嚇人...
那如果買新主機能不能推薦一下呢?謝謝^^ 當然是能到公司服務的最好(越南)
oxox iT邦新手 1 級 ‧ 2009-08-02 09:27:58 檢舉
看起來是跟主機無關,跟HDD有關...
但如果不由程式改起,硬體有他的上限呢..
ropw3721 iT邦新手 5 級 ‧ 2009-08-02 16:30:05 檢舉
是阿....小弟也很傷腦筋...
tom6507 iT邦大師 1 級 ‧ 2009-08-04 07:39:40 檢舉
你的Raid卡是原廠附的嗎?上面的記憶體有多少?
pantc328 iT邦研究生 1 級 ‧ 2009-08-04 10:07:14 檢舉
幾個問題?
1.你知道你Server到你Client有多少頻寬嗎?
2.你知道你同時上線的人數嗎?
3.你知道程式在跑什麼嗎?
4.你知道程式要讀取多少資料嗎?

A:假如頻寬用的不大的話.不會是資料庫的問題.
B.很少人上線,不會是資料庫的問題.除非每秒有上百人上線.
C.不知道,你太混了.如果是一般Key單,也不用去考慮資料庫的問題.因為資料很小,也沒什麼計算.
如果是跑報表,如果是大資料.那也不是硬體的問題.那是SA,Programmer,DBA的問題.這種東西要找少人上限的時間就要統計分析出來,不是讀到程式做處理.
D.通常資料很少.使用者要什麼,給什麼.沒事下載數萬筆資料讓使用者瀏覽就是SA,Programmer設計有問題,所以也不是資料庫的問題.

所以已你目前的問題跟配備看不出來硬體需要升級.
pantc328 iT邦研究生 1 級 ‧ 2009-08-04 10:30:13 檢舉
3萬筆用36G?
你資料有沒有正規劃?
我資料超過100萬筆也才用4G.
另外你是不是都沒去裁切交易檔.
提供您一些看法參考:
1. 其實您access DB的方式及SQL的tunning是要考量與探究的,硬體提升是有限的
2. 基本上Win2003 server enterprise與SQL2000的組合效能還ok
3. (以下從硬體方面考量:)該部x3850M2應該是有2.5" 146GB SAS,15krpm(請確認您的原廠型號,料號應為42D0652)
4. Raid card的cache建議要在256MB以上(若可以加的話)
5. 原146GB*4做Raid6,其實建議Raid10效能會較好,可能的話是建議HD可加至6顆效能也能好些
6. 預算許可情形下,建議將OS與DB分別放在不同HD(Raid),方便日後維護管理.
以上,倘有疏漏或疑義,尚請諸先進不吝指正.
ropw3721 iT邦新手 5 級 ‧ 2009-08-05 09:25:35 檢舉
RAID是原廠的
記憶體256MB
ropw3721 iT邦新手 5 級 ‧ 2009-08-05 09:38:41 檢舉
交易檔是不是指gbkmut這個檔案呢?
因為我們目前最肥大的就是這個檔案,他在Exact的Description是Transaction
那麼要如何切割會比較好呢?
tom6507 iT邦大師 1 級 ‧ 2009-08-05 09:39:43 檢舉
原廠的Raid卡效能其實很差,支援也很普通,有機會的話你換會Raid卡測試看看就知道了(因為換Raid卡=裡面的資料要全部重建)
ropw3721 iT邦新手 5 級 ‧ 2009-08-05 09:42:18 檢舉
我不知道為何正式網管最後還是用RAID6 但我們這台主機是從美國買得
好像規格按台灣不大一樣,因為上網找到的圖片,US和TW同款型號長相就不一樣了...
這台x3850M2是在越南透過KNC這家公司買得,價格2008/8/21為16,856USD
ropw3721 iT邦新手 5 級 ‧ 2009-08-05 09:59:27 檢舉
1.這個問題我不是很清楚但我知道每個user有100Mbps
2.同時使用Exact人數最高峰有50人,全公司有兩百多台電腦連網路,但24port集線器只有兩台,期間再接Hub到user那,線不是小弟佈的阿,但大家還是能正常使用。
3.我只知道他在跑SQL,CPU使用率不會太高,但今天看看重建索引會不會好些
4.如果gbkmut是每次要讀取的話,那就有可能資料量很大,但從工作管理員看來,網路使用部份仍然不高,不穩定方式呈現,時高時低
其實只要是IBM機器上面Label一定會有原廠機型機號,可能的編法為7233-7RY,您找一下給我來幫你查看看,且這機器應該買不久,有請當地IBM的維修團隊瞭解或向他們報修.
像我們公司的客戶到越南擴廠,設備都會從國內規劃與購買寄至越南去安裝設定,技術也從這邊人員過去支援,也比較能掌握相關整體環境設定等.請問 貴公司是外商或國內公司,是什麼性質的企業.我們公司本身是做IT系統整合服務的,有機會的話我很樂意提供意見或服務供您參考.
ropw3721 iT邦新手 5 級 ‧ 2009-08-06 11:37:39 檢舉
我們是國內國外都有
主要是做零件比較多
所以整體上需要原料、存料、工時...等等的計算
至於提供服務這點就要問問董事的意願了,小弟沒辦法作主
Albert iT邦高手 1 級 ‧ 2009-08-06 19:33:11 檢舉
Exact Globe ERP 的檔案
GBKMUT = Financial/budget transactions
ARTLEV = items per supplier
GRTBK = general ledger accounts
Albert iT邦高手 1 級 ‧ 2009-08-06 19:48:07 檢舉
如何增進執行效率, 早期有討論是要適度削減 MRP 資料筆數
Improve performance of Exact Globe by reducing MRP records
In an earlier posting,
現在惡名昭彰的是 GBKMUT (財務/預算相關交易資料..任何企業的計畫與執行資料皆會反映到此資料表,,因此要小心維護,,並且造成執行速度相當緩慢)
I wrote about the sometimes complex tablenames within Exact Globe. Probably the most famous (or notorious) one is GBKMUT.
Some colleagues within Exact have come up with ideas how to improve the performance of Exact Globe's logistic and production processes,
by greatly reducing the number of records in this GBKMUT table.
超越原廠的只要賣不求真只求客戶花錢的
超越代理的只代理不求真只求客戶花錢的
Skype: Adempiere/Compiere
MSN: albert_a_chen@yahoo.com


I've decided to start a discussion in the Exact Globe user group within LinkedIn, to try and get response to our ideas from outside Exact: customers as well as implementation partners and resellers.
Albert iT邦高手 1 級 ‧ 2009-08-06 19:55:05 檢舉
看看有多嚇人 你們公司 幾乎任何計畫與交易事件
都會紀錄在此 GBKMUT 資料表中

GBKMUT – GENERAL LEDGER TRANSACTIONS
3. Gbkmut – General ledger transactions
3.1 General description
The [Gbkmut] table is the central transactions table; its design is based on the One-X data model.
In the One-X data model, one single table represents the financial status instead of multiple tables.
The [Gbkmut] table stores several kinds of transactions.
Besides the general use of the [Gbkmut] fields, the following functional areas of the [Gbkmut] table are described in this
section:
• 3.3 Financial Actuals
• 3.4 Budgets
• 3.5 MRS
• 3.6 MRP
• 3.7 MRP2
• 3.8 ASSETS_2
The transactions stored in the [Gbkmut] table are linked together by the reference fields. These are the reference fields:
“Our reference”, “Your reference”, payment reference, and order number.
Albert iT邦高手 1 級 ‧ 2009-08-06 20:01:19 檢舉
以下僅供參考... 換資料庫

只會 將 60 秒反應時間 變 18-30秒...不會變成 0.8 - 3.0 秒..

只會 將 10 秒反應時間 變 3-5秒...不會變成 0.3 - 0.5 秒..

要整理一下 資料結構了

All the [Gbkmut] table information is stored on the
lowest level and with all relevant details
(like resource, customer, etc.)
included in one record.
The main field to identify how
a particular [Gbkmut] table record is used is the [Gbkmut.TransType] field.
Albert iT邦高手 1 級 ‧ 2009-08-06 20:03:27 檢舉
這 table 涵蓋很廣 出財務報告 也要靠她
The [Gbkmut.TransType] field can store one of the
following values:
Value Description Explanation
B Budget The type for budget transactions.
C Balance correction The type for the financial transactions that are created to make corrections on the balance.
E Elimination In a consolidated company, certain transactions should not be taken into account to avoid duplication.
Albert iT邦高手 1 級 ‧ 2009-08-06 20:04:29 檢舉
你還是改改資料結構 比較好
F Fiscal
The type for fiscal entries. With this it is possible to create a balance sheet for internal usage, as opposed to the official
balance sheet, which only takes the normal transactions into account.
I Inter-company
The type for transactions between companies that belong to the same division. With this type, it can be checked if the
transactions are entered.
N Normal The default type for all transactions entered. Regular reports only include transactions with this type.
O Obligation For transactions that do not affect the current financial figures, but only represent future obligations.
P Opening balance The type for the financial transactions that are created to make corrections on the opening balance.
V Void Financial transactions that are no longer valid. They are kept for tracking.
X Non ledger For transactions that need to be registered but do no affect the bookkeeping.
ropw3721 iT邦新手 5 級 ‧ 2009-08-07 13:51:20 檢舉
好吧
我會建議董事長找貨訓練專業的DBA or SA
感謝大大提供詳細的資訊
ropw3721 iT邦新手 5 級 ‧ 2009-08-07 23:53:09 檢舉
我今天已經跟董事提過,他說有需要公司出錢買,只是小弟對於Raid陣列控制卡的採購不是很熟稔,不知大大能否提供一下您們的意見,例如推薦廠牌與價格等等...。
46
weihsinchiu
iT邦新手 4 級 ‧ 2009-08-02 11:57:56
最佳解答

我以前也是使用Windows Server 2003 + SQL 2000
理論上才三萬筆資料效能上應該不至於這麼糟糕
不過後我來全部採用64位元 Win2008(x64) + SQL 2008(x64)
效能快很多,SQL 2000 (x32)效能確實比較弱
也許全部換成 64位元 可以解決您目前的問題
因為全64位元的環境下,SQL Server就沒有以前 32 位元的限制了
記憶體可以無限制的一直吃下去
大量的索引以及資料會被暫存到記憶體中
可以減少IO的存取

另外,您可以利用SQL Profiler去偵測您的ERP系統執行哪個動作的時候
會讓資料庫伺服器的CPU飆上去,飆上去的時候,是呼叫了什麼SQL Command
這個SQL Command關連到哪些TABLE,條件式使用了哪些欄位
可以根據這些欄位去設定索引,效能上會有差(有時候加的好速度上會差很多)
如果這些必要欄位有加上索引,那麼SQL Server在查詢的時候
會先將這些索引載入記憶體,索引會指出資料在儲存體的位置
所以可以快速的將符合條件的資料列找出並且載入計憶體,並回傳給你的應用程式
萬一沒有足夠的索引,這個時候就麻煩了..!!
SQL Server會直接從硬碟中,一列一列的打開資料列
去看這個資料列的欄位是否符合條件
如果符合才載入,假設三萬筆,他就再硬碟上找了三萬次
這個時候就會陷入 IO 地獄,大幅降低系統效能
IO的存取會跑到100%,這個時候不管其他人是否也在存取資料庫依定會受到影響
大家就在等某個Query跑完,然後輪下一個

好好檢查一下,你們ERP目前使用最頻繁的功能是哪一個..??
直接先從那個功能開始進行效能調教
哪個功能查詢時候使用的SQL Command
截取出這些SQL Command,並且分析出關聯的TABLE以及欄位
開始建立這些相關的索引

最後,最好每天選定一個離峰時段,讓資料庫維護計畫自動更新索引資料..!!
假設每天 08:00 ~ 21:00 是你們公司作業時間會使用到ERP
那麼你們可以設定在 04:00 ~ 06:00 進行索引的重新組織
以上這些功能在 SQL Server 2008 上面都還滿容易執行的..!!

有時候你只要先解決掉第一個瓶頸,效能上就會加快
解決掉20%的瓶頸,就可以獲得80%的效能提昇
不過我認為
64位元資料庫明顯強過32位元資料庫
SQL 2008 強過 SQL 2000
(在沒有任何效能調教的情況下就是如此,效能調教完成之後會差更多)

看更多先前的回應...收起先前的回應...
ropw3721 iT邦新手 5 級 ‧ 2009-08-02 17:01:26 檢舉

昨晚有用Exact的資料庫最佳化功能
最佳化一半發生錯誤....至於大大地作法我會反應給正式網管
畢竟當初叫他安裝SQL 2005他都不裝了....
目前的確是32bit版的OS加資料庫....

ropw3721 iT邦新手 5 級 ‧ 2009-08-02 17:08:27 檢舉

PS:資料庫最佳化gbkmut這個資料區

ropw3721 iT邦新手 5 級 ‧ 2009-08-02 18:26:42 檢舉

目前是真的陷入IO地獄,因為看工作管理員,cpu使用率低的可憐...記憶體也是用到少少的,SQL只吃掉1.7GB,但不管怎設定都沒有用,可能是32bit的問題。

vividt iT邦新手 4 級 ‧ 2009-08-02 18:51:16 檢舉

可以測試一下是寫入慢還是查詢慢?
寫入慢有可能是寫入的table的key或index太多, 造成寫入資料有額外的運算
查詢慢的話盡量要求使用者使用條件去查詢, 不要一次需要載入許多資料

oxox iT邦新手 1 級 ‧ 2009-08-03 08:52:09 檢舉

SQL只吃掉1.7GB,但不管怎設定都沒有用,可能是32bit的問題。
==> 所以我另一個問題才問,有沒正確設定使用記憶體。沒設定會只用到1.7G呢 ..

但透過大家的討論,似乎大家的想法都雷同..
換HDD不是根本的解法啊... 依據您的狀況&需求,透過INDEX或是修改SQL語法,或許比較有效呢...

pantc328 iT邦研究生 1 級 ‧ 2009-08-03 17:51:19 檢舉

整個系統最慢的是網路.
程式在寫時,如果寫入動作>讀取動作,減少建置所引.相反的是建所引增加效率.
要會清Log檔.

30
Albert
iT邦高手 1 級 ‧ 2009-08-01 14:00:27

Exact plans to stop selling SQL Server 2005 as of May 1st. From that moment on, only SQL Server 2008 licenses can be sold to Exact's customers.

SQL Server 2008 licenses grant customers the right to downgrade, which means that customers wanting to use SQL Server 2005 can still do so when purchasing SQL Server 2008 licenses. The upgrade to SQL Server 2008 can then take place at the customer's own convenience.

ExactSoftware
寫太多沒效率的 View
要從核心去改善
要改成 Procedure
不是換 Database
要改寫成 Procedure 請洽 Skype: ADempiere/Compiere

看更多先前的回應...收起先前的回應...
ropw3721 iT邦新手 5 級 ‧ 2009-08-01 14:30:38 檢舉

「要改成 Procedure
不是換 Database」
是什麼意思呢?小弟有些不大明白....
目前我們的sql是用2000版
改寫成 Procedure的意思是資料庫優化嗎?
恕小弟才疏學淺,望請大大們指教

Albert iT邦高手 1 級 ‧ 2009-08-02 08:27:04 檢舉

View -> Procedure 資料庫優化 ? No..
Please Change your Exact's Retrieve data method !!!
exactsoftware 工程師不敢改 也不敢承認
讀取資料方式是有待改進的
一直加大資料庫是無法解決問題的

ropw3721 iT邦新手 5 級 ‧ 2009-08-02 16:29:15 檢舉

目前是一年把舊的DB備份,再建造一個新的DB
董事那邊是說資料庫以會計年度為單位,一年重建一個新的從0開始,舊的備份不使用

Albert iT邦高手 1 級 ‧ 2009-08-04 09:29:55 檢舉

一年重建一個新的從0開始,舊的備份不使用??
那是不可能的
未結案訂單 未結案工單 未結案應收帳款 未結案應付帳款
?????

pantc328 iT邦研究生 1 級 ‧ 2009-08-04 14:21:03 檢舉

公司內部的資料,單據,你要怎麼作都沒關係.
但如果對外資料,憑證..所有交易流程都要被記錄,根本不能刪除跟切割.

Albert iT邦高手 1 級 ‧ 2009-08-07 12:55:09 檢舉

這是8個月前 有關 荷蘭 Exact Software 開發部門工程師 談有關執行效率
會一直低落的相關應調整觀察等事項...不要被越南代理商亂搞了...你需要的是我跟荷蘭原廠團隊的建議...

http://www.keepitsimpleandfast.com/2008/12/optimize-index-structure-which-indexes.html

Albert iT邦高手 1 級 ‧ 2009-08-07 12:59:33 檢舉

擬也該查查你的 Gbkmut 超級大資料表 的索引表 是否正常
This script will display the index usage statistics for the table 'Gbkmut' which are never read.

-- Used Indexes with only updates and No reads
SELECT object_name(s.object_id) AS ObjectName,ISNULL(i.name, '(Heap)') AS IndexName,
user_seeks AS IndexSeeks,user_scans AS IndexScans,user_lookups AS LookUps,
user_seeks + user_scans + user_lookups AS TotalReads,user_updates AS Updates,
CASE WHEN (user_seeks + user_scans - user_updates < 0) THEN'Updates > Reads'
WHEN (user_seeks < user_scans) THEN'Scans > Seeks'
ELSE' '
END AS Warning
FROM sys.dm_db_index_usage_stats s
INNER JOIN sys.indexes i ON i.object_id = s.object_id AND i.index_id = s.index_id
WHERE database_id = DB_ID() AND objectproperty(s.object_id,'IsUserTable') = 1
AND object_name(s.object_id) = 'gbkmut'
AND (user_seeks + user_scans + user_lookups)=0

Albert iT邦高手 1 級 ‧ 2009-08-07 13:01:36 檢舉

擬也該查查你的 Gbkmut 超級大資料表 的 table space 是否正常
With next query you can see how much diskspace the indexes for table 'Gbkmut' are using.
-- Indes sizes of an table
SELECT Name as Index_name, Type_desc AS IndexType, Space_used_in_mb = (page_count * 8.0 / 1024.0)
FROM SYS.INDEXES I
INNER JOIN SYS.DM_DB_INDEX_PHYSICAL_STATS(db_id(), object_id('gbkmut'), null, null, null) IP
ON I.object_id = IP.[object_id] and I.[index_id] = IP.[index_id]
ORDER BY I.index_id

ropw3721 iT邦新手 5 級 ‧ 2009-08-07 23:50:13 檢舉

OK收到,感謝大大提供資源
明天一早上班就去試試
因為之前用Exact內建的Rebuild index功能
gbkmut出現no found的錯誤....

ropw3721 iT邦新手 5 級 ‧ 2009-08-11 18:05:15 檢舉

table space的圖,有點大,光是index單一檔案就要吃掉將近9GB
http://img41.imageshack.us/i/dbspace.png/

ropw3721 iT邦新手 5 級 ‧ 2009-08-11 18:08:00 檢舉

This script will display the index usage statistics for the table 'Gbkmut' which are never read.
這指令我查了他沒有顯示東西

32
arenas
iT邦新手 5 級 ‧ 2009-08-02 10:35:04

就算真的換了主機也不一定能夠完整解決問題
有沒有試著去看是不是資料庫的問題
例如索引之類的
那也是會影響到資料庫讀寫
一般來說軟體商都會推硬體,硬體都會推軟體
我遇到的狀況都是這樣子,大家推來推企...

ropw3721 iT邦新手 5 級 ‧ 2009-08-02 16:34:47 檢舉

沒錯沒錯
那天Exact的客服經理來看說是HDD問題就打算拍拍屁股閃人
而我們董事會越南話就跟他交涉,最後還說要幫我們找硬體廠商來估價換硬碟
有夠過份...

26
raxel
iT邦新手 5 級 ‧ 2009-08-02 13:25:33

購買2.5高效能的SLC SSD
效果應該會好一些吧
不過還在用sql2000是比較舊了點

ropw3721 iT邦新手 5 級 ‧ 2009-08-02 17:02:38 檢舉

我會建議看看,可是SSD目前技術還不是很成熟吧?

pantc328 iT邦研究生 1 級 ‧ 2009-08-03 11:22:55 檢舉

已我目前看來,SSD跌只能用來當系統跌.當資料跌在祖磁碟陣列目前來說風險還是很大.
當系統碟,如果掛掉被幹一幹系統重灌而已.資料碟,資料不見就欲哭無淚了.

28
sonarsu
iT邦新手 4 級 ‧ 2009-08-02 19:03:50

購買2.5高效能的SLC SSD 東西也還好,但是需要多少才能填補這個漏洞?
解決問題看你要由上往下看,還是由下往上看到應用層.
我是先建議您檢測硬體各項數據,raid6是不是也是元凶??有些時候陣列卡效能不彰也會這樣.
也可以思考先降回raid 1+e等等來測試,耗時間不耗金錢的方式.
以前sql2000我遇到的如果是效能索引無法調,也很多問題來自ap,甚至...你都可以去檢查switch等等,由您來探索....我是覺得sql2000跑這個32gb的資料內容還好,我還遇過大怪獸....

Albert iT邦高手 1 級 ‧ 2009-08-02 19:20:24 檢舉

使用者使用條件去查詢, 不要一次需要載入許多資料!!!
但是如果不將View改成Procedure
View 無法限制只取用要 join 的資料範圍
因此一定要改成 Procedure

sonarsu iT邦新手 4 級 ‧ 2009-08-02 21:35:46 檢舉

Dear albertachen ,
問題出在這位開版大大是IT,通常改這東西普通沒經驗的不十分熟悉Performance Tuning的新手,也無力修改套裝ERP,出包就是死自己阿!!,況且原廠的工程師如果沒建議,您提建議恐怕也是被打槍...例如別處沒有問題等等官話...跟您聊天一下,感謝您的回應

ropw3721 iT邦新手 5 級 ‧ 2009-08-03 07:48:57 檢舉

因為之前正式IT被罵很慘,原因是找不到速度慢的原因,且無法解釋到董事長「聽懂」,而董事又有自己的看法與理論,所以不好找到交集,例如:之前DB才25GB,等候時間一秒,現在32GB,成長了30%,那等待時間應該只有1.3秒。可是別忘了,原本BOM展開只有到第二層,現在是全部輸入...還包含一些Transaction在內。我已經盡力解釋,因為牽涉到原因實在太多了
董事長迫切渴望解決問題,故開出50預算升級配備,指硬體部份,但如果購置新硬體仍無法解決,那事情會非常大條...

28
lmwu2002
iT邦新手 4 級 ‧ 2009-08-03 01:08:57

在公司IT部門實習? 應該交給在IT部門負責的人吧!
SQL 2000(32bit) 最多只能用到1.7G的RAM.
安裝 server 03 DataCenter => 無解.

依現有資訊判斷,有幾個方向來解決:

  1. 找出 top 10 sql command. (最耗時的10個sql command)
    如果 sql command 筆數過多 => 執行的作業是否合理?若不合理則是程式寫的太爛)
    如果時間過長 => 檢查SQL, 分析一下,是否需要增加索引.

  2. 若Exact Globe可以支援64Bit DB. 則將 os 改為 Win server 2003 std/ent 64bit + sql server 2005/2008 64bit . 會大幅提昇效能.

  3. 若Exact Globe不支援64bit DB. 維持win server 2003 ent. (boot.ini 要設 /pae /3G ) + SQL 2005/2008 32bit. 這樣資料庫才能使用超過2G的記憶體.

  4. 執行DBA 的維護工作. (日常reindex. cal statistic info..)
    將temp file個數設成與 cup 數相同. 並與主要資料庫的data file放在不同HD.
    重整所有資料,再重建所有index. (if needed)

  5. 找專門作db tuning 的公司.

  6. 更換效能更快的硬體.

目前敝公司使用 鼎新workflowII ERP7 , HP DL380 G4. 10g ram ,win 2003 ent 32bit. sql 2005 std 32bit. (去年從V4升級到V7, os 2003 std => ent, ram 4g => 10G . )

以上請參考.

ropw3721 iT邦新手 5 級 ‧ 2009-08-03 08:05:39 檢舉

小弟是在越南阿...所以網管也是越南人,只是我得把問題簡單化、易懂化
第一點小弟是資料庫白痴(完全沒學過的)...但能確定是資料庫的I/O很重
第二點正式網管有弄過,用別台主機充當臨時伺服器,SQL2000有吃超過1.7GB記憶體,但後來不知是否因為防毒軟體不支援64bit系統,所以沒有做繼續嘗試....
第三點在重灌前有設定過,不過沒有+ /3G,結果仍然一樣,我會努力說服正式網管用新版的SQL
第四點我們都固定作備份,似乎外接一顆硬碟作同步(不清楚)備份,至於DBA我就不大清楚了....我只知道網管似乎只會SQL的圖形操作....其他得問問了
第六點的話,能否推薦一下適合主機配備與廠商呢?因為我已經有問過報價了,這禮拜一業務跟我說會出來,只是不知道台灣哪邊還有哪家廠商比較優惠的價格,能否請大大提供一下

lmwu2002 iT邦新手 4 級 ‧ 2009-08-03 09:18:06 檢舉

更換硬體能解決的問題有限. 如果目前觀察瓶頸是在HD, 若想辦法提昇HD r/w 速度到2倍. 原本執行要等20秒的作業變成等>10秒. 或是要跑10分鐘的批次=>變成>5分.
有時候資料庫只要一個SQL Join 的不好.(full table scan or without index or in (...) 數量過多. 就會使整台DB 效能被影嚮.

台灣廠商: 目前我們公司找產品會請3家廠商報價,再進行議價.
ex: serverbank , 聚碩,群環,.... Server 廠牌(依順序): HP,IBM,Asus

PS: 換硬體提昇的效能真的有限. 如果系統版本都沒變過,只是資料成長30%.到36G. 速度變慢 3倍. 那確實要從硬體設定調整. 如果軟體版本有變,與軟體有關的機率較高.
如果要改Raid. 建議 raid 1 (兩顆HD) + Raid 0+1 (四顆HD)
OS & temp file 放在 raid 1. data db 放在 Raid 0+1
另外: 3萬筆 => 36G 不太合理. 除非所有 cad 檔,包含歷年來的版本變更的cad 檔都在DB中. 若是, 則要把 存放大檔的 table 放在 不同的 data file. 甚至放在不同的raid HD中. 把IO分散在不同的HD.

24
鐵殼心
iT邦高手 1 級 ‧ 2009-08-03 06:56:39

把Windows的虛擬記憶體關掉吧!

ropw3721 iT邦新手 5 級 ‧ 2009-08-03 08:06:43 檢舉

今天如果效能過慢會嘗試看看
因為小弟看PF分頁檔吃比記憶體多....

30
pantc328
iT邦研究生 1 級 ‧ 2009-08-03 08:41:20

公司有錢就有這種好處.
3萬多筆,146G用36G,磁碟陣列+26G的RAM.怎麼想都不可能是Server硬體的問題.
3萬多筆,36G資料對我們小公司而言,一台3,5萬的小PC就搞定了.
我認為,網路頻寬,資料庫的調教,程式的邏輯,使用者,程設師,管理師..素質才是關鍵.

old7ada iT邦研究生 2 級 ‧ 2009-08-03 10:06:09 檢舉

+1

ropw3721 iT邦新手 5 級 ‧ 2009-08-03 16:47:18 檢舉

重點是我沒有主導權阿...這裡網管也不是我能完全掌握
而且我只是在此地「駐足」五週,董事長說怎樣,也只能順應他去搞....
當然我也提過找一個專業的DBA來handle,他卻說東西是跟Exact買得....當然要找他負責....(這邏輯.....)
我一個業界的朋友聽了差點笑破肚子,小弟也很無奈阿...只能乖乖去問硬體廠商的業務,作報價比較....

32
gooledh
iT邦新手 1 級 ‧ 2009-08-03 09:04:55

通常erp會慢有一半是設計者沒有寫好才會造成這樣的結果

然後erp的客服就會說,這是你們設備不好所造成的

只能說erp還是找大一點的廠商比較好

ropw3721 iT邦新手 5 級 ‧ 2009-08-03 16:49:16 檢舉

這不是小弟能決定的....
因為公司合約都簽了,年費年年繳....

pantc328 iT邦研究生 1 級 ‧ 2009-08-03 17:35:56 檢舉

你跟你們頭頭說,有錢還是要養幾個有實力的成員來處理這些事.
軟體廠商跟你們公司本來理念就不同.
公司講求是永續經營.
軟體公司是講求面前的Case獲利.
所以軟體公司只將表面的功能完成,或把Bug隱藏.或許他們知道某些情形會發生某種結果,但礙於開發成本...他們是不會替你解的.反正出事早已過保固期了.(你在測試都頂多幾百筆測,當然不會出問題.當你資料量大到某種程度,你就會知道數據怎麼算都不準)

30
kaoc
iT邦新手 1 級 ‧ 2009-08-03 09:12:49

解決效能問題, 要治標更要治本, 正確的做法是先收集效能進行分析-->進行方案評估-->決定改善方案.

有 50 萬, 花在買 Server, 是很夠用, 但是 I/O 效能不夠, 跟換主機的關係要說清楚啊!!

我一年大概規劃上百套系統, 碰到不少案例都是為了消化預算而消費, 錢太多, 寧可拿去請位SA, 改善系統程式, 反而比較有幫助, 順便還可以提升就業率!!

ropw3721 iT邦新手 5 級 ‧ 2009-08-03 16:54:34 檢舉

沒錯沒錯,小弟已經問正式網管,他居然說不會SQL08+Server08.....
只會server03 + SQL 2000,要的話還要摸索....

pantc328 iT邦研究生 1 級 ‧ 2009-08-03 17:29:03 檢舉

server03 + SQL 2000,這個很正常,畢竟技術越出越快.像我正在嘗試一項新技術,下一版就發行了.
會不會,懂不懂,還是碰碰玩玩其實是二回事.
資料程式的操作,處理..不是說會建Table會架Server就叫做會SQL.
資料你要會切,會建,會拼,個總資料樣式你要懂.交易式資料程式跟統計式,分析式,歷史式..做法跟理念是不一樣的.
不是說建個Table,做個表單,將資料寫入讀出就是寫程式.

30
cmh
iT邦新手 2 級 ‧ 2009-08-03 09:25:00

你有啟用AWE記憶體嗎?如果沒有啟用,SQL是不會使用超過2G記憶體的。

看更多先前的回應...收起先前的回應...
sonarsu iT邦新手 4 級 ‧ 2009-08-03 23:28:16 檢舉

僅記得新人笑,哪會記得舊人哭,您提起了塵封的回憶阿.AWE...呵呵.眼睛一亮阿
開版大大雖說RAM已經排除,但您可以試試,有時候關節會在不起眼的地方,也不見得會如您想像

ropw3721 iT邦新手 5 級 ‧ 2009-08-03 23:47:07 檢舉

這部份得等到明早上測試了....
想哭哭,不知道怎跟另一位董事解釋
因為之前我才跟他說不是很迫切換硬體
現在又得順應另一位董事的需求....誰可以幫幫我
只能把報告打中立些了

ropw3721 iT邦新手 5 級 ‧ 2009-08-04 14:32:44 檢舉

早上開啟AWE後
目前PF 12GB 記憶體剩餘11GB
但開工作管理員看SQL的程式只有吃掉110多MB記憶體
目前速度尚可.....

鐵殼心 iT邦高手 1 級 ‧ 2009-08-04 17:45:21 檢舉

PF檔拿掉吧, 效能可以提升兩倍以上的.

ropw3721 iT邦新手 5 級 ‧ 2009-08-05 09:11:28 檢舉

目前已經把PF關了
PF直接吃掉12.4GB,RAM也理所當然剩餘11.8GB
目前效能是還ok

tom6507 iT邦大師 1 級 ‧ 2009-08-05 09:35:53 檢舉

記憶體總共24GB,沒關閉PF的時候SQL用掉110MB,記憶體剩餘11.8G....那還有至少8GB的記憶體跑哪去了

ropw3721 iT邦新手 5 級 ‧ 2009-08-05 10:29:44 檢舉

重點是現在關掉PF以後
記憶體吃掉12GB,SQL只有吃掉17xMB....
但系統有比較順暢到真的....

我要發表回答

立即登入回答