SQLServer

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

社内では会計システムに勘定奉行(ネットワーク版)を使っているが、 担当者から「勘定奉行で仕訳帳の表示に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' とする。