0

最初は、スクリプトの中から遅いクエリを見つけようとしています。そして、私を悩ませていることの1つはINSERT、テーブルにいくつかのインデックスがあるため、クエリです(この場合、インデックスを毎回再計算する必要があるため、挿入が瞬時に行われないことを理解できます)。

私のホスティング会社 (siteground) は、遅いクエリで実際の状況を調査するために、MySQL ログへのアクセスを制限しています。したがって、問題を見つけるためにバイパス方法を検索する必要があります。

今、phpmyadminで疑わしいクエリを実行し、クエリにかかる時間が問題ないかどうかを確認しています。

ただし、このアプローチにはいくつかの弱点があります。

  • 現在のサーバー負荷に基づいて実行時間を取得します。したがって、その時点でサーバーがビジー状態だった場合、誇張された時間が表示されます。

  • クエリがキャッシュされた場合、過小評価された時間が得られます。

  • クエリを確認するには、DB データを実際に変更する必要があります。のようなクエリについては問題ありませんが、およびSELECTについては扱いにくくなっています。DELETEUPDATE

したがって、別のアプローチを使用する方がはるかに優れています。EXPLAIN次の場合を除き、良い解決策になる可能性があります。

  • EXPLAIN私のDBサーバーでのクエリに対してのみ機能しSELECTます(MySQLサーバーのバージョン5.5.32、DOCからの引用:MySQL 5.6.3より前では、SELECTは唯一の説明可能なステートメントです)。私は説明UPDATEDELETEEXPLAIN SELECT代用することができます(それは正しいですか?)が、EXPLAIN INSERTそれでも大きな問題です。

質問は次のとおりです。

  1. 少なくとも 1 つのインデックスがあると遅くなるINSERT 可能性があるというのは正しいですか?

  2. EXPLAIN UPDATE代用できますDELETEEXPLAIN SELECT

  3. 言及された phpmyadmin の実行と EXPLAIN に加えて、どのアプローチを使用してクエリ速度を調査できますか?

InnoDBエンジンを使用しています。

4

1 に答える 1