反饋已提交

網絡繁忙

填報常見效能問題

1. 概述

1.1 應用場景

在使用填報程式中,可能會出現一些效能問題,比如提交慢,頁面載入慢,匯入 Excel 慢,元件操作卡頓等。本文檔針對這些常見場景,結合產品現有的邏輯進行分析,幫助大家更好的發現和解決填報效能問題。

2. 填報頁面載入慢

問題描述:

填報預覽的頁面,相較於分頁預覽方式,載入時間明顯變長。

填報預覽的頁面,插入刪除行時載入較慢。

注:如果分頁預覽載入也慢,可以參考範本效能問題排查方法排查。

2.1 資料量過大

原因分析:

由於填報預覽預設不分頁,所有資料和元素都在一個頁面上展示。所以當資料量較大時,頁面元素也會很多, 就有可能造成頁面載入慢。

解決方案

1)透過查詢條件控制每次查詢的資料量

2)使用「填報分頁」功能

2.2 元件直接顯示

原因分析:

開啟「直接顯示元件」功能後,會明顯增加瀏覽器的渲染壓力。

此外,如果儲存格元件存在資料字典且有預設值,則每一個元件都會在頁面載入時傳送請求去獲取資料字典資訊,導致載入緩慢。

注:例如按鈕元件、複選按鈕元件、儲存格按鈕組元件等,不會受到「直接顯示元件」設定的影響,預設始終直接顯示,會出現上述問題。

解決方案

1)關閉「直接顯示元件」,儘量不使用按鈕元件、複選按鈕元件、儲存格按鈕組元件

2)透過查詢條件控制每次查詢的資料量

3)使用「填報分頁」功能

4)不設定儲存格元件的預設值

2.3 頁面使用了 sql()、ds1.select()、value() 等取數函式

原因分析

同條件下,取數函式的效能排名為:value()>ds1.select()>sql(),如果使用了效能較差的函式,且資料量較大的話,會造成頁面載入緩慢。

解決方案

1)優化 sql 本身的速度

2)使用 value() 函式

3)透過查詢條件控制每次查詢的資料量

4)使用「抽數快取」優化取數速度

2.4 插入行區域性重新整理

11.0.2 版本開始,支援透過在url後新增參數 &async_insert=true 開啟插入行後區域性重新整理,能有效提升大數據量時的插入行速度。

3. 元件操作卡頓

問題描述:

元件在輸入值或者選擇值之後,頁面會長時間卡頓。

3.1 元件資料字典資料量大

原因分析:

帶有資料字典設定的元件,如果資料量較大,模糊搜尋就會比較慢。

解決方案

參考下拉框模糊搜尋慢的解決方案處理。 

3.2 元件存在聯動

原因分析:

如果元件輸入資料後,需要聯動其他元件資料字典/儲存格或者寫了 JS 進行一些自訂處理,而被聯動的內容較慢的話,就會導致卡頓。

解決方案

1)優化被聯動的內容,減少多餘的聯動設定。如需要使用取數函式,儘可能用 value() 函式。同條件下,取數函式的效能排名為:value()>ds1.select()>sql()。

2)使用「抽數快取」優化取數速度 

3)如果是用JS給其他儲存格指派,且指派的資料量較多,可以換用批量指派API,具體用法可參考:JS實現複選按鈕元件全選和批量操作中的2.5一節

3.3 元件值校驗慢

原因分析:

帶有資料字典設定的元件,設定了「不允許自訂值」後,每次輸入值都會觸發該校驗,去對應的資料字典搜尋。如果資料量大,就會導致卡頓。

解決方案

勾選「允許自訂值」,並將相關校驗放在「填報屬性」的「資料校驗」設定中實現。

4. 資料校驗慢

問題描述:

點選資料校驗,頁面卡住無回應。

Excel 批量匯入速度慢(Excel 批量匯入包括了校驗和提交2個程式)。

4.1 資料校驗過多/過於複雜

原因分析:

在資料量較大的情況下,如果設定了較多/較複雜的校驗公式,例如包含層次座標,取數函式(sql()、ds1.select()、value()等)的公式,就會導致校驗卡頓。

解決方案

1)同條件下,取數函式的效能排名為:value()>ds1.select()>sql()。在條件允許的情況下,儘量使用value函式來取數,同時優化資料集sql本身的執行速度。

2)使用 「抽數快取」優化取數速度

3)在校驗公式無法簡化和減少的情況下,可以考慮分批次提交資料,減少每次提交的資料量。

4.2 不符合校驗條件的資料過多

原因分析:

存在不符合校驗條件的資料時,系統會標註出對應的儲存格,方便使用者識別和修改。但如果不符合的資料太多,標註程式會佔用較多渲染效能,造成頁面卡頓。

解決方案:

此情況較少,可使用「填報分頁」優化,但分頁後不符合校驗的標記只對當前頁生效。

4.3 元件的自訂值校驗慢

原因分析:

11.0.2版本開始,點選資料校驗或者提交時,會校驗所有元件的「允許自訂值」設定。當元件資料字典中的資料量較大時,該校驗程式會佔用比較多的時間。

解決方案:

1)如果不需要在提交時校驗元件的「允許自訂值」設定,可以在finedb的FINE_CONF_ENTITY表中新增欄位WriteOptimizationConfig.verifyCustomValue=false來回退邏輯,使得提交時不再校驗該項設定。

2)如果需要在提交時校驗元件的「允許自訂值」設定,目前沒有特別好的方案,可以考慮減少資料字典的資料量,或者將相關校驗放在「填報屬性」的「資料校驗」設定中實現。

5. 資料提交慢

問題描述:

點選資料校驗速度較快,但點選提交速度較慢。頁面一直顯示載入中,甚至當機無回應。

Excel 批量匯入速度慢(Excel 批量匯入包括了校驗和提交2個程式)。

5.1 資料量建議

原因分析:

在伺服器硬體較好,且填報範本為簡單結構的情況下,目前能支援的提交資料量(行*列)上限在100w左右。在此範圍內,資料量越多,提交的時間也越長。

解決方案:

儘量控制一次提交的資料在100w內。如果超出了,可以考慮分批次提交,減少每次提交的資料量。

5.2 資料表已有資料影響了更新和刪除速度

原因分析:

當提交類型為智慧提交、刪除提交、更新提交時,在執行提交程式中會傳送帶有where關鍵詞的sql語句去根據主鍵找到對應資料,所以如果資料表已有部分資料,則該查詢動作可能耗時較長,影響整個提交的速度。

解決方案:

1)如果只需要插入資料,將提交類型改為插入提交。

2)如果需要更新和刪除資料,則根據填報屬性中設定的主鍵,去資料庫給對應欄位增加索引。索引改寫的欄位數量和順序都需要和填報主鍵欄位一致,否則無法發揮效果。(優先推薦)

注:可透過測試插入提交的速度來確認問題原因是否為此項,如果同樣資料插入提交較快,其他提交較慢,則大概率為此原因。

5.3 資料庫自身存在效能問題

原因分析:

如果資料庫本身效能不是很好,也會影響提交速度。

解決方案:

1)優化資料庫設定

2)更換資料庫

3)若入庫的資料庫類型為 MySql,可以透過在 MySql 資料連結的 URL 後增加 rewriteBatchedStatements=true參數來啟 MySql 資料庫的批量提交功能,進而提高提交效能。格式如下:

若 URL 中未新增過參數,直接加 ?rewriteBatchedStatements=true

若 URL 中已新增過參數,最後加 &rewriteBatchedStatements=true

5.4 資料庫表被鎖

原因分析:

如果提交入庫的表因為某些原因被鎖了,則可能導致長時間提交不入庫。此時日誌中會出現類似於Lock wait timeout exceeded等帶有lock的報錯。

解決方案:

在資料庫檢查入庫表是否被鎖,解鎖後再提交。

5.5 頁面資料存在笛卡爾積

原因分析:

範本父子格設定不合理,造成資料以陣列*陣列形式提交,提升了提交的資料量和時間。

出現此問題時,提交時頁面會提示存在笛卡爾積,日誌中也會出現BatchDML,one of FArray的提示。

解決方案:

根據報錯中提示的欄位,調整其所在儲存格的父子格關係。不建議開啟「允許填報笛卡爾積」,其並不能提升效能。

6. 匯入Excel慢

問題描述:

匯入 Excel 時間較長,甚至頁面當機無回應。

6.1 渲染慢

原因分析:

匯入資料量大時,會明顯增加瀏覽器的渲染壓力。且如果開啟了「直接顯示元件」,則會進一步增加渲染壓力,導致匯入緩慢。

注:例如按鈕元件、複選按鈕元件、儲存格按鈕組元件等,不會受到「直接顯示元件」設定的影響,預設始終直接顯示,會出現上述問題。

匯入時可以透過以下載入動畫的時間來確認是由於渲染慢導致。

解決方案:

1)使用「填報分頁」功能進行預覽和匯入 (優先推薦)

2)關閉「直接顯示元件」,儘量不使用按鈕元件、複選按鈕元件、儲存格按鈕組元件

6.2 計算慢

原因分析:

在匯入時,會對頁面上的公式進行計算。如果公式複雜,或者涉及取數函式(sql()、ds1.select()、value()等)的話,則可能會影響匯入速度。

匯入時可以透過以下載入動畫的時間來確認是由於計算慢導致。

解決方案:

1)同條件下,取數函式的效能排名為:value()>ds1.select()>sql()。在條件允許的情況下,儘量使用value函式來取數,同時優化資料集sql本身的執行速度。

2)減少需要在頁面上計算的公式數量,降低其計算複雜度。

3)使用「抽數快取」優化取數速度 。


附件列表


主題: 填報應用
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙