iT邦幫忙

0

請問運行多年的ERP資料庫如何瘦身?

目前遇到有幾十萬個停用的物料,但是有各式各樣的關聯單據
想刪掉他們挪到其他備用機上面

想這樣做原因是,現在非停用的才9千多個物料,但停用的達到四十萬多個
去查詢 SQL Server Log 紀錄因為這個嚴重影響查詢速度

本身數據幾十萬其實不大,但關鍵此ERP常使用 out join 物料表查詢,導致關聯數據變成四十幾 * 幾萬...

所以查詢速度就很慢了
員工反應跟之前比起,以前2秒能查完的速度,變成要等1分鐘


資料庫是 SQL Server 2012

石頭 iT邦研究生 2 級 ‧ 2021-01-12 14:07:51 檢舉
有執行計畫嗎? 還有是否有建立正確索引?
另外很多時候可以用sql改寫來提升效率
不明
【**此則訊息已被站方移除**】
ERP好難 iT邦新手 4 級 ‧ 2021-01-15 10:39:04 檢舉
@石頭 感謝您,但沒辦法動到他們的SQL..
3
㊣浩瀚星空㊣
iT邦超人 1 級 ‧ 2021-01-12 09:49:28
最佳解答

已經累積太多了。建議你最好找專業的資料管理來幫你處理。

刪除大量的資料是很危險的事。如果還有關聯的話更是可怕。
在不確是是否有清除工具的情況下。
我倒是不建議你自已搞就是了。

看更多先前的回應...收起先前的回應...

補充一點,我以前曾經用過的招式。
不是用刪除,而是用新增。

畢竟如你說的,刪除要40萬,但保留9000。
但一次要刪除大量的資料也很可怕的。

所以當時用的招是另建一個新表。將要保留的資料給新增過來。
然後更名一下試試。

要做以上動作,最好能有一台測試的機器上試。
不要直接線上試。很危險。

CalvinKuo iT邦大師 7 級 ‧ 2021-01-12 10:43:23 檢舉

我覺得這個工程浩大,幾乎是整個舊ERP系統結轉換後,到新的ERP做期初開帳。

我只想說現在這套ERP系統沒失效料號欄位嗎? 有的話,WHERE排除失效料號就行...

其實經由樓主多次的問題來推估,可能真的沒有。
且在物料可以多達40萬筆來看。
因該也沒做到備用庫的應用。

當然這也只是猜測。
認真來說,他光說「以前2秒能查完的速度」
我就會有點嚇到了。
2秒就該開始有警覺了。怎麼會拖到現在。更不要說現在1分了。

但就如j大說的,這還是需要通靈才能給正確的處理方式。
我們目前也只能用猜的。

ERP好難 iT邦新手 4 級 ‧ 2021-01-15 10:40:44 檢舉

有停用欄位,但他們報表先用 out join 導致慢查詢

2
japhenchen
iT邦大師 1 級 ‧ 2021-01-12 09:44:55

有原作者的結轉或清除記錄工具嗎?這個問題需要通靈能力的人才有辦法解決了

ERP好難
我是有遇見過粗暴的開發者....

SELECT * FROM ViewA
LEFT JOIN ViewB on ViewB.id=ViewA.Masterid

幾百筆都不太會慢,但只要上萬筆資料,慢到吐血,再怎麼粗暴,也不要直接VIEW JOIN VIEW,資源開銷都被這樣的動作給吃光光,如果你的ERP系統有這樣的設計思維,除非你有辦法拿到原始碼並懂得如何修改及發布出去,否則....

請找原設計來修改,如果他願意且不會漫天要價的話

ERP好難 iT邦新手 4 級 ‧ 2021-01-15 10:41:03 檢舉

給錢他們也改不了..

3
leeihsing0127
iT邦新手 5 級 ‧ 2021-01-12 10:25:20

幾十萬筆,資料量很小
可以先針對查詢速度慢的項目,先作sql的調整,或是table效能的調校
之後有時間,再去調整其他的sql

WQ iT邦新手 3 級 ‧ 2021-01-12 10:30:40 檢舉

leeihsing0127 正解哦~應該先從資料庫效能調校著手,另外給版主一個建議,如果是無效的料件,建議將它設定為無效資料(作廢),在SQL下條件時多判斷此條件,也是可以解決所謂的大量資料JOIN問題。

ERP好難 iT邦新手 4 級 ‧ 2021-01-15 10:41:33 檢舉

感謝,但動不了他們的SQL

1
ckp6250
iT邦研究生 2 級 ‧ 2021-01-12 11:41:10

千萬別輕舉妄動!
找原廠。

4
hank_itman
iT邦新手 5 級 ‧ 2021-01-13 08:34:05

另外一種常用的解法,分割、封存資料庫,以年份為單位將相關的資料另外分割出來,停用的物料就用停用的日期做區分,因為你停用了,後面就不會有出單了。日後想要去查詢相關資料的話在另外掛起來或者再開一個查詢用的介面之類的去查。

ERP好難 iT邦新手 4 級 ‧ 2021-01-15 10:41:49 檢舉

感謝你!

0
bidonsu
iT邦新手 4 級 ‧ 2021-01-14 19:04:14
針對提問中所提到的停用物料比現行使用物料還多,先不論是否為物料編碼原則的適當性所導致,首先ERP的停用物料位於物料主檔中存在的意義為此物料禁止入庫(包含相關入庫請採購單據都將受限使用),但還是可以出庫(包含出庫相關單據不再此限),以及該年度每月月結作業時都會使用到停用物料料號進行成本滾算,所以如果要將多年來停用的物料分割,搬遷到歷史table中存放,則基本篩選條件為停用物料不屬於當年度的庫存物料,如果停用物料從建立到停用無任何入出庫作業單據產生,則可以歸類在報廢區(或是直接清除,必須考量貴司內稽內控制度)。
以上分享個人對於ERP停用物料的管理原則,但如果自己無法對公司ERP系統有充分理解與掌控,建議還是編一些預算請原廠顧問來協助處理才是上策。
ERP好難 iT邦新手 4 級 ‧ 2021-01-15 10:42:11 檢舉

感謝你

0
牛哥
iT邦好手 1 級 ‧ 2021-01-15 10:37:12

由料號能有幾十萬筆的規模來推測,貴司應該也是業界佼佼者廠商。
建個資料倉儲來用用,應該不過份才對!

找協力廠商,讓專業的人來執行,你才不會孤軍奮戰、自負盈虧。
SORRY!没提供什麼專業意見,但這是職場經驗談,也請你務必參考一下...

ERP好難 iT邦新手 4 級 ‧ 2021-01-15 10:39:45 檢舉

有協力廠商,只是品質...

0
dennistsai
iT邦新手 5 級 ‧ 2021-01-16 08:24:35

我們的做法是把資料分成三部分[作業資料][歸檔資料][歷史資料]
三種資料間可以簡單互轉,供參考

我要發表回答

立即登入回答