0

私はアプリケーション (MySQL/PHP) を構築します。このアプリケーション (MySQL/PHP) は、(やがて) 離れた (そしておそらく遅い) MySQL サーバーへの接続を使用する可能性があります。アプリは、DB 接続を頻繁に開く AJAX ウィスパーを使用します。私はクライアント側の最適化をいくつか行いましたが、永続的な接続を使用する勇気がありませんでした。これは良い考えかもしれません。

サーバーの制限を超えてサーバーを再起動する必要があるアイドル状態の mysql 接続が心配です。だから私mysql.connection_timeoutは15秒まで使用する予定ですが、制限後にすべてのアイドル状態の永続的な接続を強制終了しますか? それとも、サーバー プロセスが終了するまでシステム リソースをブロックしますか?

私はささやきでトランザクションを使用しませんし、接続が閉じられた後にすべてのロックを解放する必要がありますよね?

他に注意すべき継続的な接続の問題はありますか? (私はすでにドキュメントを読みました。)

4

1 に答える 1

2

通常、MySQL との永続的な接続を使用しても、何も得られません。その接続プロトコルは、すでに一般的にかなり高速です。失われるのは、通常の非永続的な接続を使用する場合の「クリーンな」動作環境の保証です。

トランザクションの途中で何らかの理由でスクリプトのいずれかが終了した場合、またはサーバー側の変数が設定されたままになっている場合、永続的な接続とは、接続が他のスクリプトによって再び取得されたときに、半分完了したトランザクションがまだアクティブであることを意味します。

これが発生すると、非常に簡単にデッドロック状態に陥る可能性があります。新しいスクリプトは、古い/ダーティな接続があることを認識せず、MySQL は元の接続スクリプトがなくなったことを認識できず、独自のクリーンアップを実行するため、ゴミが散らばった環境になります。

そうは言っても、設定を使用して、PHP がユーザーに代わって開いておく接続の数を制限できますmysql.max_persistent。スクリプトからいくつの接続を試行しても、PHP がその制限を超えることはないため、MySQL 自体のmax_connections設定よりも低く設定できます。

于 2011-12-23T14:20:50.897 に答える