問題タブ [mysql-slow-query-log]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - MySQL 低速クエリ ログでのクエリの最適化
credentials
私たちのデータベースは、複数の異なる種類の資格情報 (ログインなど) を保持するテーブルを持つように設定されています。これらのタイプのいくつかを関連付けるテーブルもありcredential_pairs
ます (たとえば、ユーザーはパスワードとセキュリティ トークンを持っている場合があります)。
ペアが一致するかどうかを確認するために、次のクエリがあります。
このクエリは正常に機能し、まさに必要なものを提供してくれます。ただし、スロークエリログに常に表示されます (おそらくインデックスの不足が原因でしょうか?)。MySQLにクエリを「説明」するように依頼すると、次のようになります。
おそらく最後のエントリ (69197 行が表示されている場所) に問題があると思いますが、私は DBA とはかけ離れています... 助けてください。
資格情報テーブル:
credential_pairs テーブル:
資格情報インデックス:
credential_pair インデックス:
更新メモ:
AFAICT: DISTINCT は不必要でした... 本当に必要なものは何もなかったので、削除しました。fabrizio のアドバイスに従って credential_pairs ルックアップの場所を取得しようとして、ステートメントを次のように変更しました。
そして....何もありません。ステートメントは同じくらい長くかかり、Explain はほとんど同じように見えます。したがって、次のようにプライマリ列とセカンダリ列にインデックスを追加しました。
そして... 何もありません。
インデックスを使用していると表示されていますが、それでもテーブル スキャンのように見えます。そこで、次のようにジョイントキーを追加しました(以下のa'rのコメントに従って):
そして...インデックスと同じ結果です(これらは機能的に同じですか?)。
mysql - 遅いクエリログでのMysqlロック時間
私はかなり長い間正常に実行されているアプリケーションを持っていますが、最近、いくつかの項目が遅いクエリログにポップアップし始めました。すべてのクエリは複雑で、リファクタリングを使用する可能性のある醜いマルチ結合selectステートメントです。それらはすべてブロブを持っていると思います。つまり、ディスクに書き込まれます。私が興味を持ったのは、それらのいくつかにロック時間が関連付けられている理由です。どのクエリにも、アプリケーションによって設定された特定のロックプロトコルはありません。私の知る限り、明示的に指定されていない限り、デフォルトではロックに対して読み取ることができます。
だから私の質問:どのシナリオがselectステートメントにロックを待たなければならない(そしてそれによって遅いクエリログに報告される)のでしょうか?INNODB環境とMYISAM環境の両方を想定します。
ディスクの相互作用は、ある種のロック時間としてリストされますか?はいの場合、これを説明しているドキュメントはありますか?
前もって感謝します。
mysql - mysqlクエリの内部結合が遅くなる
次のデータベース構造があります。
このテーブル (ビジネス) には 507,736 件のレコードがあります
このテーブル (businesscat) には 519,825 件のレコードがあります
このテーブル (カテゴリ) には 5 つのレコードしかありません
だから、私の問題は、ffを使用して最も近いビジネスの計算で100レコードを取得しようとしていることです:
より速くするためのアイデアはありますか?
django - Django スロー クエリ: django フィルター ステートメントをデータベース ログのスロー クエリに接続する
mysql バックエンドで遅いクエリを診断しようとしていて、Django フロントエンドを使用している場合、バックエンドによって報告された遅いクエリを Django フロントエンド コードの特定のクエリセットとどのように結び付けますか?
mysql - MySQL での自動 kill/タイムアウト スロー クエリ
非常に遅い、たとえば 100 秒のクエリを自動的に強制終了またはタイムアウトするために、MySQL 側で実行できる構成はありますか。
mysql - mysql プロンプトから実行した場合、mysql の遅いクエリ sql ステートメントは遅くありません
サーバーで mysql スロー クエリを有効にして、5 秒以上かかるクエリをログに記録しました。mysql> から同じクエリを実行すると、10 秒を超えると報告されたクエリは 1 秒未満しかかかりませんでした。何故ですか?
TIA、-ピーター
mysql - 長時間実行されるクエリの問題
/tmp
サイトがmysqlディレクトリを非常に速く埋めているように見える場所で作成しなかったスクリプトでいくつかの問題を修正しようとしています。
を確認したslow query log
ところ、このようなクエリがたくさんあります。
45
合計でユニオン(カテゴリテーブルごとに1つ)を信じていることを除いて、これらのテーブルは巨大ではありませんが、Advertising_Business_and_Retail
テーブル450k
自体にリストがあります。
このクエリを手動で実行したところ、約2分半かかりました。
これが/tmpディレクトリが非常に速くいっぱいになる理由だと思いますか?
問題を解決するために私ができることに関するヒントはありますか?
mysql - スロー クエリ ログに非常に多くの拡張テーブルがあるのはなぜですか?
mysql データベースを最適化したいので、my.cnf で mysql スロー クエリ スイッチを有効にします。私が見ているのは、私の拡張機能や他の拡張機能からの多くのテーブルを含む多くの sys_log クエリです。これは遅いクエリですか? どうすればそれを超えることができますか?
mysql - mysql log_queries_not_using_indexes は正しく動作しませんか?
次の手順があります。
そして、ここCREATE TABLE
にテーブルTeams
とのスクリプトがありますteam_project
:
サーバー上に同一のスキーマを持つデータベースはほとんどありませんが、この手順は 1 つのデータベースによって呼び出された場合にのみログに記録されます。これらの他のデータベースによって行われた呼び出しはログに記録されません。クエリが遅いかどうかの問題ではありません (常に約 0.0001 秒かかります)。インデックスを使用していないとログに記録される理由についてです。そんなことがあるものか?
Zagor23 が示唆したように、実行しEXPLAIN
た結果は次のとおりです。a) 手順が記録されているデータベース:
b) 手順が記録されていないデータベース:
実際には、データは少し異なりますが、それほどではありません。GoodDB (ログに記録されていないもの) には、Teams に 11 行、team_project に 420 行、BadDB (Teams に 4 行、team_project に約 800 行) があります。入札差額ではないようです。その手順をログに記録しないようにする方法はありますか?
mysql - mysql の slow_query_log が空なのはなぜですか?
私は本番マシンで次の設定をしています:
Mysql server 5.5.19
アクティブな (ps 行をチェックした) my.cnf には以下が含まれます:
mysql> 「log%」のような変数を表示; --> 「log_queries_not_using_indexes=ON」と「log_slow_queries=ON」が表示されます
ファイル /opt/app/mysql/log/mysqld-slow.log が存在し、mysql に属し、長さがゼロです。
問題は、テスト マシンで、log-queries-not-using-indexes オプションが原因で、遅いクエリ ログが急速にいっぱいになることです。とにかく必要だったので、無効にしました。今、私たちは実稼働データベースを稼働させ、同じことが起こらないことを確認したかったので、同じセットアップを見つけましたが、ログは空です. mysqld を再起動して遊んでいるわけにはいきません。ログが空である理由を理解したいだけですが、構成は多くのクエリをログに記録する必要があることを示しているようです。実行中の一般的なアプリケーションは、運用サーバーとテスト サーバーで同じであるため、実際にインデックスが作成されていないクエリが発生しない可能性はほとんどありません。
問題は、何もログに記録されていない理由を確認するために、他にどのような構成を確認できるかということです。ログに記録したくありません。何らかの理由でdbサーバーが再起動された場合に、突然ログが開始されないようにしたいだけです。my.cnf からオプションを削除するだけでそれを達成できることはわかっていますが、現在ログに記録されていない理由も理解したいと思います。
ありがとう、イーサン