iT邦幫忙

2022 iThome 鐵人賽

DAY 23
2
IT管理

專案開發的鳥事系列 第 23

提升工廠安排訂單系統效能82% [系統分析][資深] Day 23

  • 分享至 

  • xImage
  •  

 工廠內部的信任
團隊人員要互相建立信任,最好的方式就是解決別人困惱的事情。
在這件事情內,我解決工廠內部長期無法解決的問題「查詢效能太慢」,原本的系統從每次查詢需要2分鐘39秒改進到13秒(每次查詢時間)。
*本文是作者的工廠經驗,文章不包含工廠機密與特殊生產技術。

 資訊部*週排程系統
我剛任職第一天讓我印象深刻,總共有23位不同職能的同事請求我協助。我光是接電話就接到手軟,他們跟我討論問題還需要排隊。在我接這個職位時,有6位程式設計師從這個公司離職,其他留在公司內的4位工程師,因為他們手頭上還有其他系統問題要負責,而這個問題不是他們的專業,所以無法處理這個系統問題。
 這個改進專案我總共跟4個部門、7個職位合作,資訊部、生產管理部、製造部、廠商、資訊部經理、製造部經理、生產管理員。

 *週排程系統(安排訂單系統): 指的是工廠要準備上工「生產線」的產能規畫。例如預計今天要完成那筆訂單,以及相關的生產資訊。裡面通常會記錄日期、生產線名稱、產線工作人員、生產線負責主管、生產的產品、完工數量、重工數量(rework quantity)、報廢數量。

 找到問題
上班的第二天,我跟經理申請登入權限,我進去資料庫SQL server 確認一下資料庫的結構,我花了很大的工夫才把它的結構確認完畢,接下來我把所知道的實際情況,跟資訊部的同仁與經理一同報告,並提出快速的解決方案,在資料庫內新增index加快資料的查詢速度,我建立120個Indexes。
 系統效能提升的部份:

  1. 我客製化工廠的需求。
  2. 我提升程式設計(Asp.net C#)程式執行效率performance improvement。
  3. 我資料庫查詢效能提升82%效能,Tables數為80個,7個Triggers建立120個Indexes。

程式流程:
三層式架構
web-> asp.net iis -> database SQLserver

  1. 網頁前端
  2. Server IIS + Asp.net C#
  3. DataBase Microsoft SQL Server
     在伺服器Server上的程式碼:
    原本的程式寫法的時的複雜度是O(n4次方),我先把它的時間複雜度調降。

/*每週「生產線」按排訂單生產系統*/
/*每間工廠一天最多開啟23條生產線 Assembly line or Production line*/
查詢天數: 例如 2022/4/4 – 2022/4/10 這個星期有排多少生產線
for (int j =0; j<= days; j++)/*抓取的天數 10-4 +1 =7*/
{
    for(int iPL =0; iPL < PLrows.count; iPL)/*讀取每條生產線的資料*/
    {
        /*每週 星期一至星期日(星期日用7)*/
        /*依每日取得每條產線的內的訂單*/
        for(int iWeek=1; iWeek <= 7; iWeek ++)
        {
            if (dt_c.Rows.Count > 0)/*有資料就進行下一程式*/
            {
                /*從資料庫讀取資料。例如:讀取4/4 產線:A21 有排幾筆訂單。*/
            }
        }
    }
}

 資料庫效能提升
使用Microsoft SQL Server資料庫,總共提升82%效能,而裡的Tables數為80個,7個Triggers,在這個基礎上我新增加120 indexes跟 5個Stored Procedures。總共的資料筆數為八百萬筆資料,每批次新增的資料筆數為3萬筆資料。
例如: 訂單與客戶之間的join


SELECT customer_name, customer_city, customer_mail, sales_total
FROM online_customers AS oc
    INNER JOIN
            orders AS o
            ON oc.customer_id = o.customer_id
    INNER JOIN
            sales AS s
            ON o.order_id = s.order_id

以上述的SQL 來做例子,
所以要在這幾個位置新增index:

  1. Table:sales 的order_Id欄位位置新增index
  2. Table:online_customers 的customer_Id欄位位置新增index
  3. Table:orders 的customer_Id欄位位置新增index
  4. Table: orders 的order_Id欄位位置新增index
    其他的功能部份,我新增程式功能、異質系統整合,總共六項。

如果有事情找我,請到Linkedin,謝謝
轉貼政策:著明作者 Billour Ou 歐育溙 就可以自由轉貼。

關於作者:
Billour Ou
歐育溙 的資歷


上一篇
軟體專案開發的心酸 Day 22
下一篇
傳統產業-專案開發[系統分析][資深] Day 24
系列文
專案開發的鳥事35
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言