新聞中心
23年行業(yè)深耕細作,見證成長歷程
23年行業(yè)深耕細作,見證成長歷程
2020.04.30 閱讀:3177
如何從源頭打造極速優(yōu)化的MES系統(tǒng)
作者:黃睿
當企業(yè)上線MES系統(tǒng)之后,僅僅是萬里長征的開始,為什么要進行MES的優(yōu)化?這是一個非常之現(xiàn)實以迫切的問題,眾所周知,MES系統(tǒng)所運行的必要基礎數(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)出如下的幾個方面的弊病:
G.系統(tǒng)掃描相應變慢
H.系統(tǒng)報表查詢變慢
I.看板等實時刷新程序無法正常執(zhí)行
J.系統(tǒng)登陸時間過長
K.系統(tǒng)作業(yè)過程中停頓(卡,延時) 或死鎖, 需重啟服務器次數(shù)增多。
L.數(shù)據(jù)備份日漸困難。
以上問題不光是MES系統(tǒng)所特有的,所有的事務處理性(OLTP)性的數(shù)據(jù)庫應用系統(tǒng),都將面臨以上的困擾。由于很多MES系統(tǒng)默認采用的是關系性數(shù)據(jù)庫(SQL Server /Oracle),除少量計算在前端完成以外,系統(tǒng)中95%的邏輯運算都在DB層中實現(xiàn),非常依賴于數(shù)據(jù)庫服務器的性能, 所以,當MES系統(tǒng)表現(xiàn)不盡如人意之時,首先需要在數(shù)據(jù)庫后臺進行必要的數(shù)據(jù)優(yōu)化,完成后基本上就能取得相應的性能提升,以下以中國市占率相當之高的深圳市華磊迅拓科技有限公司的OrBit-MES系統(tǒng)為例,來說明如何針對DB層進行深度的優(yōu)化:
OrBit-MES后臺優(yōu)化包含的內(nèi)容如下:
1.合理的表以及邏輯關系的設計;
2.數(shù)據(jù)庫的日常維護工作;
3.數(shù)據(jù)庫大數(shù)據(jù)量表的數(shù)據(jù)壓縮;
4.數(shù)據(jù)庫大數(shù)據(jù)量表的分區(qū)表方法;
5.歷史數(shù)據(jù)的定期遷移;
6.合理的負載部署,服務器的分工;
7.服務器硬件性能的提升;
以下以最常見的表結構與邏輯關系的設計的優(yōu)化為例子加以重點說明:OrBit-MES系統(tǒng)表以及標準模型表,以及相關邏輯(存儲過程)是在系統(tǒng)平臺的設計階段已定決定,并且經(jīng)過了相當多的實踐,其性能相對穩(wěn)定可靠,靠此部份的優(yōu)化以提升系統(tǒng)整體性能的收益不大,效果也不太明顯。
系統(tǒng)在實施周期時根據(jù)客戶所定制的表,以及存儲過程,特別是新上線的功能插件所對應的存儲過程,將有比較大的優(yōu)化余地, 在這類業(yè)務表的設計時,應注意如下方面:
A.遵守業(yè)界通行的數(shù)據(jù)庫設計的標準范式(至少前3個范式盡可能遵守)
B.遵守OrBit-MES建議的主鍵定義方法,以及字段命名規(guī)則
C.合理的設計表的冗余以及關聯(lián),區(qū)分事務處理表(大表),以及基礎數(shù)據(jù)表(小表)。
D.合理設計索引,特別是經(jīng)常用于查詢的表的索引(產(chǎn)品表,工單表, Lot表等),對于大表只創(chuàng)建必要的索引。
E.對于第三方測試數(shù)據(jù)表,采用分庫或分服務器的設計方案,不要放到MES主數(shù)據(jù)庫中。
F.一切新表的設計,應以性能為首要考慮因素
業(yè)務邏輯(查詢或存儲過程)設計時時,應注意如下方面:
A. 所有的內(nèi)部查詢應基于主鍵PK
B.避免在一個大的SQL中采用一次性連接多個表的查詢 (特別是大表對大表的關聯(lián),是非常不明智的),應拆分為基于PK的多步來執(zhí)行查詢。
C. 避免使用大的事務包裹業(yè)務邏輯,事務應盡可能短小,否則容易占用服務器資源導致排隊甚至死鎖。
D. 少用游標,絕不要針對大表使用游標。
E.Select查詢時盡可能使用 With (no lock) 語句,避免占用鎖的開銷,在每一個存儲過程中加入: SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ,以降低死鎖的可能性。
F.Insert最好以批量方式執(zhí)行,一次性處理多條新記錄。
G.Update應基于PK為條件,避免使用復雜的Where表達式, 導致表鎖。
H.一切有利于減少死鎖,提升性能的邏輯設計為首要考慮因素。
事實證明,頻繁的死鎖往往出自于不合理的業(yè)務邏輯設計,故在進行OrBit-MES的客戶化功能的數(shù)據(jù)設計時,應仔細權衡,以性能為先導,才能取得相對較好的結果。
當數(shù)據(jù)庫服務層的優(yōu)化進達到一個相當高的水準之后,企業(yè)的還需要考慮后續(xù)的一些優(yōu)化過程,比如大數(shù)據(jù)的定期歸檔,提升網(wǎng)絡以及服務器本身的的IOPS性能等等,進行深度的負載均衡的設計,在這方面,不同的MES廠商水平參差不齊,所以選型MES時,請注意一定不能有“運維優(yōu)化黑箱”,候選的MES系統(tǒng)所有的數(shù)據(jù)資產(chǎn)必須全方位向甲方開放,同時還需要提供專業(yè)的瓶頸定位工具以及優(yōu)化工具,它必須是一個“可高度優(yōu)化的MES”, 否則企業(yè)將會為此付出極為沉痛的代價。
只有從源頭加以及分析與優(yōu)化,才能讓你的MES系統(tǒng)“健步如飛”。