Rails 複数DB Casual Talks で話してきたので資料をあげておきます。
これで君も複数DBだ!!(変なテンション
追記:質問をみつけたので答えておきます
これに関しては「コネクションプーリング都市伝説」論争というのを調べるとたくさん情報が出てくるのだけど、MySQL の場合新規接続コストが安いのでリクエストごとに接続してもパフォーマンスにあまり影響がなかったりします。実際、mobage はこの方式で大量アクセスを捌いているのでそのぐらいのパフォーマンスは出ると思って良いでしょう。
ただし、AR が実際にやっているのは mysql2 の新規接続だけではないので、それよりはコストが高く、モデルの数が 1000 個とかいう特殊な環境になると、 それなりのコストになりそうです。
ということで、某ク社の若者に、何リクエスト毎に接続を切るのか指定できるオプションを追加する PR を受けているので、そちらの機能がご利用頂けます。
Introduce max_requests parameter to clear connections per some requests. #1
コストが高い場合は、この max_requests オプションを利用すると良いでしょう。モデル数が常識的な範囲内であれば気にする必要はないと思いますけどね :D
これで君も複数DBだ!!(変なテンション
追記:質問をみつけたので答えておきます
都度接続と永続接続、どれだけ接続のCPUコスト違うんだろう #mdb_casual
— kenjiskywalker (@kenjiskywalker) 2014, 11月 10
都度接続ってオーバーヘッドどんなもんなんだろ? #mdb_casual
— SUGINO Yasuhiro (@suginoy) 2014, 11月 10
これに関しては「コネクションプーリング都市伝説」論争というのを調べるとたくさん情報が出てくるのだけど、MySQL の場合新規接続コストが安いのでリクエストごとに接続してもパフォーマンスにあまり影響がなかったりします。実際、mobage はこの方式で大量アクセスを捌いているのでそのぐらいのパフォーマンスは出ると思って良いでしょう。
ただし、AR が実際にやっているのは mysql2 の新規接続だけではないので、それよりはコストが高く、モデルの数が 1000 個とかいう特殊な環境になると、 それなりのコストになりそうです。
ということで、某ク社の若者に、何リクエスト毎に接続を切るのか指定できるオプションを追加する PR を受けているので、そちらの機能がご利用頂けます。
Introduce max_requests parameter to clear connections per some requests. #1
コストが高い場合は、この max_requests オプションを利用すると良いでしょう。モデル数が常識的な範囲内であれば気にする必要はないと思いますけどね :D