勘定奉行の性能劣化に対処

社内では会計システムに勘定奉行(ネットワーク版)を使っているが、 担当者から「勘定奉行で仕訳帳の表示に20秒くらいかかる」と言われたので調査してみた。

その担当者のPC固有の問題かどうかを切り分けるため別のPCから同様の操作を行ってみたところ、同じ症状が発生した。 ということは、サーバ側に問題がありそう。

勘定奉行のクライアントは生のSQL文をサーバに発行する仕組みなので、 Wiresharkでパケットをキャプチャすることで発行されたSQL文を把握することができる。

その状態でサーバ側の負荷を測定してみると、特定のSQL文の処理に時間がかかっていることが分かった。

勘定奉行ではSQL Serverをバックエンドに使っているので、 「SQL Server パフォーマンス」などでGoogle先生に聞いてみると、以下のページがヒット。

どうする? SQL Server のクエリ パフォーマンスが低下した!

これに従い、サーバ上でSQL Server Management Studioを起動し、勘定奉行で使用しているデータベースで

sp_updatestats

としたところ、1秒程度で処理が完了するようになった。 上記ページには各テーブル単位での統計情報更新や、実行プランの再作成、インデックスの再構築の方法も書かれているが、今回は行わなかった。

このようにSQL文を直接叩きに行く方法は多分メーカ(OBC)では非推奨だと思うが、 クライアント側にsp_updatestatsを発行するメニューくらいつけてほしいものだ。

→ 当然勘定奉行にメニューがあった。ちょっとわかりにくいところだけど。

「データ領域管理」「データ領域保守」「データ領域変更」とメニューを辿り、「F9 統計情報」ボタンを押すと、統計情報の更新というウィンドウが表示されるので、「実行」すればよい。 対象は、現在選択しているデータ領域のみとのこと。

ちなみに、全データベースに一括で統計情報の更新をかけるには、SQL Management Studioから、

 sp_MSforeachdb 'USE [?]; sp_updatestats'

とする。