日記
blogmapのゴミ掃除プロセス (13:51)Edit

そろそろまたblogmapのURLリスト巨大化が始まったんで、ゴミURL掃除プロセスを作成。DB初回登録時から30日以上経っても、そのURLを利用するサイトが現れない場合(要するに一つのサイトしか使わなかったURL)は、削除するようにした。そういうURLがDBの約1/3を占めていた模様。ただ、そのついでに各プロセスのバランスを調整したら失敗してしまい、デッドロック地獄にはまってしまったんでサーバーを強引に再起動。依存関係がややこしいプロセスをパラレルに動かしているんで、ロジカルにデッドロックが起こらないようにはできないんだよなー。MySQLって、temporary tableをファイルに作成するプロセス(ちょっと複雑なjoinをしているもの)が異常に遅くなるんで、そのタイミングで関連tableに触るとlockがかかってしまい、そこにlow priorityな命令が混ざるとデッドロック地獄に落ちてしまう。だいたいindexをちゃんと見てくれれば、全行くっつけるような巨大なtemporary tableなんて作らなくてもいけるように作ってあるはずなのに、なんでindexで絞ったjoinのたびに巨大なtemporary tableを作っちゃうんだろう。

Published At2004-02-10 00:00Updated At2004-02-10 00:00