新聞中心
26年行業(yè)深耕細作,見證成長歷程
26年行業(yè)深耕細作,見證成長歷程
2020.04.30
閱讀:3892
如何從源頭打造極速優(yōu)化的MES系統(tǒng)
作者:黃睿
當企業(yè)上線MES系統(tǒng)之后,僅僅是萬里長征的開始,為什么要進行MES的優(yōu)化?這是一個非常之現(xiàn)實以迫切的問題,眾所周知,MES系統(tǒng)所運行的必要基礎(chǔ)數(shù)據(jù)之外,MES系統(tǒng)每天還采集了大量的生產(chǎn)過程數(shù)據(jù)存放到數(shù)據(jù)庫之中,其數(shù)據(jù)量大小,取決于如下幾個方面:
A. 企業(yè)的生產(chǎn)規(guī)模。
B. MES管理的產(chǎn)品流程的數(shù)量
C. MES每流程上數(shù)據(jù)采集節(jié)點的站點數(shù)
D. 每站點數(shù)內(nèi)部的數(shù)據(jù)采集內(nèi)容
E.第站點上的數(shù)據(jù)采集的時間頻率
F.第三方系統(tǒng)存放到MES數(shù)據(jù)庫中的數(shù)據(jù)內(nèi)容

隨著系統(tǒng)的上線,數(shù)據(jù)量日漸增大,由最初的幾個G,增加到100G甚至幾個TB, 系統(tǒng)的性能,也隨之而下降,同時還表現(xiàn)出如下的幾個方面的弊?。?/span>
G.系統(tǒng)掃描相應(yīng)變慢
H.系統(tǒng)報表查詢變慢
I.看板等實時刷新程序無法正常執(zhí)行
J.系統(tǒng)登陸時間過長
K.系統(tǒng)作業(yè)過程中停頓(卡,延時) 或死鎖, 需重啟服務(wù)器次數(shù)增多。
L.數(shù)據(jù)備份日漸困難。
以上問題不光是MES系統(tǒng)所特有的,所有的事務(wù)處理性(OLTP)性的數(shù)據(jù)庫應(yīng)用系統(tǒng),都將面臨以上的困擾。由于很多MES系統(tǒng)默認采用的是關(guān)系性數(shù)據(jù)庫(SQL Server /Oracle),除少量計算在前端完成以外,系統(tǒng)中95%的邏輯運算都在DB層中實現(xiàn),非常依賴于數(shù)據(jù)庫服務(wù)器的性能, 所以,當MES系統(tǒng)表現(xiàn)不盡如人意之時,首先需要在數(shù)據(jù)庫后臺進行必要的數(shù)據(jù)優(yōu)化,完成后基本上就能取得相應(yīng)的性能提升,以下以中國市占率相當之高的深圳市華磊迅拓科技有限公司的OrBit-MES系統(tǒng)為例,來說明如何針對DB層進行深度的優(yōu)化:
OrBit-MES后臺優(yōu)化包含的內(nèi)容如下:
1.合理的表以及邏輯關(guān)系的設(shè)計;
2.數(shù)據(jù)庫的日常維護工作;
3.數(shù)據(jù)庫大數(shù)據(jù)量表的數(shù)據(jù)壓縮;
4.數(shù)據(jù)庫大數(shù)據(jù)量表的分區(qū)表方法;
5.歷史數(shù)據(jù)的定期遷移;
6.合理的負載部署,服務(wù)器的分工;
7.服務(wù)器硬件性能的提升;

以下以最常見的表結(jié)構(gòu)與邏輯關(guān)系的設(shè)計的優(yōu)化為例子加以重點說明:OrBit-MES系統(tǒng)表以及標準模型表,以及相關(guān)邏輯(存儲過程)是在系統(tǒng)平臺的設(shè)計階段已定決定,并且經(jīng)過了相當多的實踐,其性能相對穩(wěn)定可靠,靠此部份的優(yōu)化以提升系統(tǒng)整體性能的收益不大,效果也不太明顯。
系統(tǒng)在實施周期時根據(jù)客戶所定制的表,以及存儲過程,特別是新上線的功能插件所對應(yīng)的存儲過程,將有比較大的優(yōu)化余地, 在這類業(yè)務(wù)表的設(shè)計時,應(yīng)注意如下方面:
A.遵守業(yè)界通行的數(shù)據(jù)庫設(shè)計的標準范式(至少前3個范式盡可能遵守)
B.遵守OrBit-MES建議的主鍵定義方法,以及字段命名規(guī)則
C.合理的設(shè)計表的冗余以及關(guān)聯(lián),區(qū)分事務(wù)處理表(大表),以及基礎(chǔ)數(shù)據(jù)表(小表)。
D.合理設(shè)計索引,特別是經(jīng)常用于查詢的表的索引(產(chǎn)品表,工單表, Lot表等),對于大表只創(chuàng)建必要的索引。
E.對于第三方測試數(shù)據(jù)表,采用分庫或分服務(wù)器的設(shè)計方案,不要放到MES主數(shù)據(jù)庫中。
F.一切新表的設(shè)計,應(yīng)以性能為首要考慮因素
業(yè)務(wù)邏輯(查詢或存儲過程)設(shè)計時時,應(yīng)注意如下方面:
A. 所有的內(nèi)部查詢應(yīng)基于主鍵PK
B.避免在一個大的SQL中采用一次性連接多個表的查詢 (特別是大表對大表的關(guān)聯(lián),是非常不明智的),應(yīng)拆分為基于PK的多步來執(zhí)行查詢。
C. 避免使用大的事務(wù)包裹業(yè)務(wù)邏輯,事務(wù)應(yīng)盡可能短小,否則容易占用服務(wù)器資源導(dǎo)致排隊甚至死鎖。
D. 少用游標,絕不要針對大表使用游標。
E.Select查詢時盡可能使用 With (no lock) 語句,避免占用鎖的開銷,在每一個存儲過程中加入: SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ,以降低死鎖的可能性。
F.Insert最好以批量方式執(zhí)行,一次性處理多條新記錄。
G.Update應(yīng)基于PK為條件,避免使用復(fù)雜的Where表達式, 導(dǎo)致表鎖。
H.一切有利于減少死鎖,提升性能的邏輯設(shè)計為首要考慮因素。
事實證明,頻繁的死鎖往往出自于不合理的業(yè)務(wù)邏輯設(shè)計,故在進行OrBit-MES的客戶化功能的數(shù)據(jù)設(shè)計時,應(yīng)仔細權(quán)衡,以性能為先導(dǎo),才能取得相對較好的結(jié)果。

當數(shù)據(jù)庫服務(wù)層的優(yōu)化進達到一個相當高的水準之后,企業(yè)的還需要考慮后續(xù)的一些優(yōu)化過程,比如大數(shù)據(jù)的定期歸檔,提升網(wǎng)絡(luò)以及服務(wù)器本身的的IOPS性能等等,進行深度的負載均衡的設(shè)計,在這方面,不同的MES廠商水平參差不齊,所以選型MES時,請注意一定不能有“運維優(yōu)化黑箱”,候選的MES系統(tǒng)所有的數(shù)據(jù)資產(chǎn)必須全方位向甲方開放,同時還需要提供專業(yè)的瓶頸定位工具以及優(yōu)化工具,它必須是一個“可高度優(yōu)化的MES”, 否則企業(yè)將會為此付出極為沉痛的代價。
只有從源頭加以及分析與優(yōu)化,才能讓你的MES系統(tǒng)“健步如飛”。