現在運用されているWebシステムが遅く、一括登録できる機能では大したデータ量ではないにも関わらずたかだか200~300件程度でタイムアウトになる。タイムアウトまでは1分くらい。
運用担当はタイムアウトまでの時間を延ばす方法を考えていたが、仮に1分に300件処理できると仮定すると、1秒で5件しか登録できない計算だ。この遅さは開発サイドに問題があると考えられる。

その中でも一番怪しいのはデータベースの設計か、データベースへのアクセス周辺である。
世の中には「プログラムが書けるだけ」でいっぱしだと勘違いしている技術者が結構多い。経験上、処理効率を考慮したり、業務でどう使うのかを考えたり、そういう事をしていると技術者の中では浮くことがままある。特にWebシステムはその傾向が強いようだ。まともなテストしているの?と首を傾げたくなるものも見かける機会が増えた。

話が少しそれたが、クエリーを記録して調べた結果
・indexを付けるだけで速くなるだろう。
・indexを付けてもindexを使わない検索をするSQL文があるので、修正するほうがいいだろう。
が見えてきた。

検証環境で試した結果、軽く数十倍の処理速度改善となった。


今回の環境は MySQL。大昔にWindowsに入れた覚えがあったかなあ、程度である。当時はストアドなんかもなかったが、今はできるようになったらしい。
今回のシステム、開発元にメンテさせてもダメかなと思い、せっかくだからMySQLをしっかり学ぼうと思いたち、書籍を探してみた。


ものすごくいい本があった。
ただし、初学者には向かない。ある程度データベースを知り、設定系の経験が必要だろう。
また、目新しいことが載っている訳ではない(2010年の発行)。あくまで「深い基礎」を学ぶためのものだ。

エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド/奥野 幹也

¥3,564
Amazon.co.jp

こういう観点でほかのDBも見るようにしてみようかと思う。