社内SEの日常、データベースを使用するプログラムの高速化
SQLを発行する部分を見直しましたが、高速化は無理です。
SQLそのものは単純です。
色々と試してみましたが、60秒を30秒まで高速化することは無理です。
前任者が作っているから、そんなものかなと思っています。
こういう場合、SQL以外の方法で高速化するしかありません。
動作を確認するため、ログファイルの出力を一時的にデバッグモードにします。
プログラムがどんな処理を行っているのか、ログファイルを確認することは重要です。
プログラムから出力されるSQLを見ていましたが、同じSQLを複数回発行しています。
データベースから参照されるデータ、前日以前に更新された情報ばかりです。
SQLで得た大量のデータ群を処理した結果、何度も同じものが使われています。
つまり、新たにSQLを発行して得られる大量のデータ群から、計算結果を表示する行為が無駄なのです。
こういう事情があるから、高速化してほしいとのリクエストが出てきたと理解できました。
ここまで解析出来れば、十分に対応策ができます。
過去に発行したSQLとその計算結果をキャッシュとして保存することにしました。
1日で50件ぐらいのSQLを発行しているだけなので、100件分のSQLと計算結果をキャッシュに格納します。
以前に発行されたSQLを実行しようとしたら、その計算結果をキャッシュから取り出します。
60秒間必要だった処理、キャッシュに入れば1秒未満で表示されます。
ここまで改良できたので、共同提案として改善提案のネタにしました。
プログラムの評判も良いし、改善提案のノルマも達成できました。
こういうプログラム動作の改善、経験を積まないと知らない技術なのかなと思います。
#社内SE #データベース #プログラム #使用 #高速化 #SQL以外の方法 #ログファイル #デバッグモード #どんな処理 #確認 #何度もの同じもの #無駄 #対策 #キャッシュ #計算結果 #改善提案 #ネタ