mysql_connect VS mysql_pconnect [closed] 質問する

mysql_connect VS mysql_pconnect [closed] 質問する

疑問に思っているのですが、Web で検索したところ、答えは多岐にわたるようです。PHP 経由でデータベースに接続する場合、mysql_connect よりも mysql_pconnect を使用する方がよいのでしょうか。pconnect の方がスケーラビリティがはるかに優れていると読みましたが、一方で、永続的な接続であるため、同時に 10,000 の接続をすべて永続的に持つことは、スケーラブルではないように思われます。

前もって感謝します。

ベストアンサー1

MySQL では永続的な接続は不要です。他のデータベース (Oracle など) では、接続を確立するにはコストと時間がかかるため、接続を再利用できると非常に便利です。ただし、これらのデータベース ブランドでは接続プールが提供されており、より優れた方法で問題を解決します。

MySQL データベースへの接続は他のブランドに比べて高速であるため、永続的な接続を使用すると、他のブランドのデータベースに比べて MySQL の利点は比例して少なくなります。

持続的な接続にも欠点があります。データベース サーバーは、接続が必要かどうかに関係なく、各接続にリソースを割り当てます。そのため、接続がアイドル状態の場合、多くのリソースが無駄に消費されます。アイドル状態の接続が 10,000 に達するかどうかはわかりませんが、数百でもコストがかかります。

接続には状態があり、PHP リクエストが別の PHP リクエストで以前に使用されたセッションから情報を「継承」するのは不適切です。たとえば、一時テーブルとユーザー変数は通常、接続が閉じられるとクリーンアップされますが、永続的な接続を使用する場合はクリーンアップされません。文字セットや照合順序などのセッションベースの設定も同様です。また、LAST_INSERT_ID()セッション中に最後に生成された ID が報告されます (以前の PHP リクエスト中であった場合でも)。

少なくとも MySQL の場合、持続的な接続の欠点はおそらく利点を上回ります。また、高いスケーラビリティを実現するには、他にも優れた手法があります。


2014 年 3 月の更新:

MySQL の接続速度は他のブランドの RDBMS に比べて常に低かったのですが、さらに改善されています。

見るhttp://mysqlserverteam.com/improving-connectdisconnect-performance/

MySQL 5.6 では、接続と切断を処理するコードの最適化に取り組み始めました。そして、この作業は MySQL 5.7 で加速しました。このブログ投稿では、まず私たちが達成した結果を示し、次にそれを得るために何を行ったかについて説明します。

詳細と速度の比較についてはブログをお読みください。

おすすめ記事