清水川です。

07/10/11 に Atsushi 
Shibata<[&#x30E1;&#x30FC;&#x30EB;&#x30A2;&#x30C9;&#x30EC;&#x30B9;&#x4FDD;&#x8B77;]>
 さんは書きました:
> 柴田です。
>
> SQLObjectの古いバージョンで,SQLiteを使っているときにコネクションでス
> レッド競合の問題が出たことがありました。そのときは,SQLObjectのコードを
> 書き換えて,「コネクションをプーリングしないで毎回接続する」ようにして対
> 処しました。私だったら同じ方法を使うでしょうね。
> 「コネクションプーリング"しない"」というのはMySQLを使ったWebシステムを作
> る際の定石と言える対策のようです。MySQLの場合,コネクションをプーリング
> するより毎回接続する方がパフォーマンスが上がるんだそうです。

MySQLでの定石、ということで「mysql コネクション プール」で検索すると
色々と情報が出てきますね。

今回頂いたヒントを元に調べ直してみたら、SQLObjectのマニュアルに
コネクションプーリングをOFFにする方法が記載されていることに気づきました。

   http://www.sqlobject.org/SQLObject.html#id42
   disabled pooling (by setting conn._pool = None)

この記述に従って、さっそくプーリングしないように設定して実証実験して
みたところ、コネクションはすぐ解放され、page/秒も20%ほど向上しました。
abでの簡易的な測定ですし、環境によるところもあるとはおもいますが、
今対象となっている環境では効果的な結果が出ました。
ありがとうございます。

# ymasudaさんの翻訳ドキュメントは読んでいたのですが...


> ちなみに,PostgreSQLの最近のバージョンでは,MySQLよりずっと素早くDBへの
> 接続ができるようになっている,という客観的なデータがあるようです。
> または,SQLRelayのようなものを間に挟む,という対策もあり得ます。

なるほど。今回はSQLRelayは必要なさそうですが、クライアント数が増えたら
検討してみます。

> なお,この問題に対処すべき「実装のレイヤー」におけるレスポンスビリティは
> TurboGears側にあると思います。SQLObjectのようなO/Rマッパーは,コネクショ
> ンプーリングまで関知すべきでないと思うので,SQLObject側の問題とは言えな
> いと思います。

たしかにSQLObjectは選択肢を提供してくれていたので、どう使うかはTG側
で決めるべき事ですね。
このあたりの、SQLObjectやMySQLを使う上での定石っぽいところはもうちょっと
勉強してみます。

ありがとうございました。
-- 
清水川.jp

--~--~---------~--~----~------------~-------~--~----~
このメッセージは、次の Google グループへの参加を申し込まれたことを確認す
るために送信されました。 Google グループ "turbogears-ja" グループ。
 このグループに投稿するには、次の宛先にメールを送信してください。 turbogears-ja@googlegroups.com
 このグループから退会するには、次へメールをお送りください。 
[&#x30E1;&#x30FC;&#x30EB;&#x30A2;&#x30C9;&#x30EC;&#x30B9;&#x4FDD;&#x8B77;]
 その他のオプションについては、次の URL からグループにアクセスしてくださ
い。 http://groups.google.co.jp/group/turbogears-ja?hl=ja
-~----------~----~----~----~------~----~------~--~---

メールによる返信