学習履歴

プログラミングなどの学習履歴

SQLのコミットのタイミング

SQLのコミットをするタイミングがまずくて
客先に迷惑をかけた話をします。

システムの内容を簡単に言うと、
社内で使う申込者の登録をする管理システムで
Perlを使ってCGIを実現するというものでした。
リリース後も機能を追加したり、
不具合がでたから対応にあたったりしていました。
今は何も不具合がでていないようなので
ひとまず安心といったところです。

タイトルの問題がでたのは不具合がでなくなった
一つ前のことで、朝早くに客先から電話があって
何事かと思うと申込者一覧を出す画面がめちゃくちゃ遅いというものでした。
どのくらい遅いのかというと20分、長くて40分と
一つの画面を出すのにありえないくらい時間がかかっているとのことでした。

その連絡以降から本番で使われているログを調べたり、SQLの実行速度を計ったりしましたが何の問題もありませんでした。
そこで改めてソースコードを見るとその問題となっていた画面ではinsert、update、selectを同時に行わなければいけない画面で全ての処理を終えてから最後にコミットするという流れになっていたので、
もしかするとこれが原因なのでは?と思い、
一旦コミットしてから画面を表示させるという方向に書き換えてみました。
こちらからでは本番用で改善したかどうかを確認することはできないので客先で確認してもらったところ改善されたようでした。

原因は単純なことでしたが、結果がこれほどちがうとは想定外でした。