見出し画像

社内SEの日常、データベースを使用するプログラムの高速化

SQLを発行する部分を見直しましたが、高速化は無理です。
SQLそのものは単純です。

色々と試してみましたが、60秒を30秒まで高速化することは無理です。
前任者が作っているから、そんなものかなと思っています。

こういう場合、SQL以外の方法で高速化するしかありません。
動作を確認するため、ログファイルの出力を一時的にデバッグモードにします。

プログラムがどんな処理を行っているのか、ログファイルを確認することは重要です。
プログラムから出力されるSQLを見ていましたが、同じSQLを複数回発行しています。

データベースから参照されるデータ、前日以前に更新された情報ばかりです。
SQLで得た大量のデータ群を処理した結果、何度も同じものが使われています。

つまり、新たにSQLを発行して得られる大量のデータ群から、計算結果を表示する行為が無駄なのです。
こういう事情があるから、高速化してほしいとのリクエストが出てきたと理解できました。

ここまで解析出来れば、十分に対応策ができます。
過去に発行したSQLとその計算結果をキャッシュとして保存することにしました。

1日で50件ぐらいのSQLを発行しているだけなので、100件分のSQLと計算結果をキャッシュに格納します。
以前に発行されたSQLを実行しようとしたら、その計算結果をキャッシュから取り出します。

60秒間必要だった処理、キャッシュに入れば1秒未満で表示されます。
ここまで改良できたので、共同提案として改善提案のネタにしました。

プログラムの評判も良いし、改善提案のノルマも達成できました。
こういうプログラム動作の改善、経験を積まないと知らない技術なのかなと思います。

#社内SE #データベース #プログラム #使用 #高速化 #SQL以外の方法 #ログファイル #デバッグモード #どんな処理 #確認 #何度もの同じもの #無駄 #対策 #キャッシュ #計算結果 #改善提案 #ネタ

この記事が気に入ったらサポートをしてみませんか?