jms-web / FMS

:gear: フジワラ 不適合管理システム
https://jms-web.slack.com/messages/CA1096YDU
0 stars 0 forks source link

生産進捗管理(全統合)の時間のかかるクエリをストアドに移植 #274

Closed jms-funato closed 10 months ago

jms-funato commented 3 years ago

概要

SV04,SV05を仮想サーバにリプレース以降、Accessの動作が全体的に遅くなった 原因はネットワークのスループットが原因と思われる まずは、特に遅い処理(20分→60分)をSQLServerのストアドプロシージャに置き換える

対象MDB

\\sv04\system\新進捗システム\確認用\生産進捗管理(全統合).accdb

対象処理

Form_F_メニューステータス.更新_年間()

修正オブジェクト

移行時作業

ローカルテーブルのレコードを変換したリンクテーブルにコピー

エラー

ストアド実行後、F_BSキャッチアップが表示されなくなる=>WT_進捗入力年間計画が空

jms-funato commented 3 years ago
jms-funato commented 3 years ago

SEISAN.T_進捗入力の遅かった原因

jms-funato commented 3 years ago

不要な制約値の削除とインデックス断片化解消スクリプトのスケジュール実行で、サーバ移行以前の処理時間(60分)に戻った

jms-funato commented 3 years ago

インデックスメンテタスク[sp_RebuildFragmentedIndex]がエラーで落ちており、インデックス断片化が解消されないままだった

タスクエラー

テーブル[プリプレグ管理スポット]でページロックエラーが発生していた

jms-funato commented 3 years ago

処理時間

ストアド版2分 クエリ版44分

問題点

Q_硬化Gp更新等一部のクエリで使用されるマスタテーブルが正規化されておらず、当該クエリだけでクエリ版の処理時間の半分を占めている

修正案1

Access・SQLServer間のデータ転送がボトルネックになっている可能性が高いため、メインテーブルをローカルのWTで一旦処理して、最終結果のみSQLServerに返すようにしてみる

jms-funato commented 2 years ago

出力結果となるリンクテーブル[T_進捗入力年間計画]を処理のみローカルテーブルとして処理した場合

パススルークエリ化する場合

各クエリSQLをSQLServer構文に置き換える必要があるため、ストアド化と変わらない むしろ通信回数はストアドより多くなってしまう