0

MySQL クエリで問題が発生しました。誰かが助けやアドバイスを提供してくれることを期待していました。

私は、1 つのページ (tab1 = プロファイル、tab2 = アドレス、tab3 = 支払いなど) のさまざまなタブにかなりの量のデータを組み合わせる PHP ベースのシステムを開発しています。その結果、1 つのページには最大 34/ 40 個の MySQL クエリが、異なるテーブルから、または異なる条件でプルされます。

ページの読み込みが非常に遅くなったので、Web ホストに何が問題なのかを尋ねたところ、MySQL クエリが遅い (2 秒以上) ためだとアドバイスされました。また、MySQL ユーザーは一度に 15 接続しか許可されていないとも言われました。

ページに 40 個のクエリがあり、一度に 15 個の接続しか許可されていない場合、これは効果的にキューに入れられ、1 つが完了するのを待つことを意味しますか? この場合、ページの読み込みに時間がかかる理由は理解できますが、解決策はわかりません。15 個の MySQL クエリは大量と見なされますか、それともホスト (HostMonster) による非常に厳しい制限ですか?

また、システムに同時にアクセスするユーザーが 15 人いる場合、この 15 接続は各ユーザーに分割されますか?それともサイトにログインしているユーザーごとに 15 接続ですか? データベースユーザーごとという意味だと思いますが、システムにアクセスするすべての人が同じデータベースユーザーを使用するため、複数のユーザーが一度にアクセスできるシステムを作成することは不可能に思えますか?

接続全体が私を少し混乱させました。

助けてくれてありがとう!

4

2 に答える 2

2
  1. ページごとに 1 つの接続を持ちます。クエリを順番に並べる
  2. これらのクエリを最適化します - Explain を参照してインデックスを使用してください
  3. おそらく、クエリを組み合わせてスループットを減らします。

ところで、1 ページあたり 10 以上のクエリは過剰な IMHO です。

于 2013-03-30T18:05:35.147 に答える
0

最大接続エラーの問題がある場合は、コマンド ラインからこのコマンドを使用します

mysqladmin flush-hosts  -uuser -p'password'

これにより、MySQL が記録したホストがフラッシュされ、リストが再度作成されます。MYSQL 5.6 の新しいバージョンでは、これに関する詳細情報が得られますが、以前のバージョンでは得られません。

以下を設定できます

max_connect_errors 10000 

メッセージが再度表示されないようにします。

15 クエリまたは接続はまったく問題ではありません。ビジー状態のデータベースでは、毎秒数千の接続と数万のクエリが見られます。

于 2013-03-31T13:27:13.173 に答える