遅いMySQLデータベースのクエリ

まず、データベースのクエリが遅い何ですか?

遅いデータベースクエリは、クエリ時間は、私たちが時間を設定する声明以上のものです。

あなたは、時間設定を表示できます。

 

 

 デフォルト設定の時間は10秒です。彼らはまた、実際のプロジェクトに応じて独自に設定することができます。 

設定long_query_time = 0.0001;

第二に、関連するパラメータMySQLのスロークエリの説明:

slow_query_log:0手段が閉じられ、1に、スロークエリログを開くかどうか。

-スロークエリのログ:レガシー(バージョン5.6以下)のMySQLデータベーススロークエリログの格納パス。このパラメータを設定することはできません、システムはデフォルトのファイルhost_nameの-slow.logにデフォルト設定されます

スロークエリログファイル:新バージョン(5.6以降)のMySQLデータベーススロークエリログの格納パス。このパラメータを設定することはできません、システムはデフォルトのファイルhost_nameの-slow.logにデフォルト設定されます

long_query_time:スロークエリのしきい値、クエリ時間は、ログ設定されたしきい値を超えています。

log_queries_not_using_indexes:未使用のインデックスもスロークエリログ(オプション)にクエリを記録しました。

log_output:ストレージをログに記録します。log_output =「FILE」のログファイルを表しますが格納されている、デフォルト値は「FILE」です。log_output =「TABLE」がデータベースに格納されたログを示し、そのような情報は、ログMySQLへ書き込まれます

スロークエリログの構成:

Slow_query_logのデフォルト値はスロークエリログが無効になっている意味、OFFで、次のように値slow_query_logを設定することによってオンにすることができます。

「slow_queryの%」のようなショーの変数; - スロークエリ

「long_query_time」のようなショーの変数; - クエリの時間設定

「%slow_query_log%」のようなショーの変数; - スロークエリログの設定を表示

「log_queries_not_using_indexes」のようなショーの変数; - ビュー未使用の索引

グローバルlog_queries_not_using_indexes = 1を設定します。 - クエリにインデックスを使用しないでも、スロークエリログを記録しています

「%slow_queries%」のようなグローバルな状態を表示; - スロークエリ検索レコード

第三に、接続や設定の最大数を確認します

- 1、接続の最大数を参照

「%MAX_CONNECTIONS%」のようなショーの変数; - 接続数を制限

SHOW GLOBAL STATUS LIKE「Max_used_connections」 - サービスに応じて、最大接続数

理想的な設定:Max_used_connections / MAX_CONNECTIONS * 100%≈ 85%は、
接続の最大数は、それが10%以下の割合で検出された場合、MySQLサーバの接続が高すぎる上限を設定、接続の上限の約85%を占めました。

- 2、接続の最大数を変更する
GLOBAL MAX_CONNECTIONS = 500に設定し、

-様々なステータスの値を実行しているリストのMySQLサーバは、
GLOBAL状態を表示します。

第四に、一般的なスロークエリの最適化

1、インデックスは、の場合の役割を果たしていませんでした

文字列の最初の文字は「%」であれば1)、LIKEキーワードクエリを使用して、クエリでLIKEキーワードクエリを使用して、インデックスは動作しません。唯一の「%」は、第1の位置インデックスに動作しますではありません。

2)複数列インデックスクエリMySQLを使用して複数のフィールドにインデックスを作成することができます。インデックスには、最大16個のフィールドを含むことができます。マルチカラムインデックスの場合は、最初のフィールドでこれらのフィールドを使用した唯一のクエリは、インデックスが使用されます。

図2に示すように、データベースの構造を最適化

1)、テーブル番号フィールドは、複数のテーブルに分解します

2)、中間テーブル

クエリの分解に関連した3、

多くの高性能アプリケーションは、リレーショナルクエリに分解するクエリは、単一のテーブルであってもよく、アプリケーションにクエリ結果を関連付ける、多くのシーンが各テーブルに、より効率的であるです。

4、ページの最適化の制限

  一般句によって適切な順序を添加しながら、オフセットを加えるシステムで実行される方法で使用されるページング制限動作。対応するインデックスが存在する場合、通常は効率がそうでない場合、MySQLはファイルのソート操作の多くを行う必要があり、良いだろう。

      非常に厄介な問題は、オフセットが非常に大きい場合、例えば、10,000レコードの前に、破棄された後にのみ、最後の20を返すmysqlのクエリ10020を必要とされ、このようなクエリ制限10000,20、あり得ることです、このような高い価格。

        このような問合せを最適化する最も簡単な方法ではなく、すべての列を照会のスキャンをカバーするためにできる限りのインデックスを使用することです。その後、やるとするのに必要な時間は、カラムに必要な関連操作を返します。その効率をやって大きなオフセットのために大幅に改善されます。

おすすめ

転載: www.cnblogs.com/jane4321/p/11607719.html