#isucon に応募した - 刺身☆ブーメランのはてなダイアリー
というわけで参加してきた。まず何よりも、一緒に参加してくれた @tnmt @hansode のお二人に感謝したいです。ありがとうございました!それから運営の皆様、他の参加者の皆様、お疲れ様でした。あと差し入れをもってきてくれた @umazura さん、 Ust で応援してくれた皆さんもありがとうございました。
ベストスコアは 10,000 を超えたものの最終測定時は FAIL というちょっと残念な結果に終わった。個人的にも悔しいことが二点あった。
遅いクエリは早々に突き止めていて、最適化にも取り組んでいたのに、途中で諦めて他のことをやり始めてしまったのが一点目。 id と日時だけを持つ中間テーブルを作ってそこから引くようにスキーマを変更しようとしたのだけど、そのテーブルから引き直したら結果がおかしくて混乱してしまった。いま思い返せばたぶんカラムの型があってないとかの凡ミスだった気がする。まぁ勝利チームの談話を聞いたらそれよりもっとシンプルな解決方法があったようで、どっちみちベストな案ではなかったみたいだけど、あそこをちゃんとやってればもっとスコアが伸びただろうから、悔しさもひとおし。
そしてキャッシュを入れたのだけど、そのせいで不整合チェックにひっかかってしまったのが二点目。これも懇親会でいろいろ話を聞いたら、タイムスタンプをキーにすることで原理的に不整合が起こらないようにするやり方があるとのことで、そういうのを思いつかなかったのも実力不足を痛感させられたのだけど、それ以上になぜ不整合チェックでひっかかってしまうのかを自分で説明できてなかった。わからないままになってしまったのが悔しい。
常さまの引用にあるとおり、まさしく「ボトルネックを見極めろ」ということに尽きるのだなあと、そこが徹底できてなかったんだなーと痛感させられた。勉強になりました。