MySQLサーバーのチューニングと最適化

この記事では、主にパフォーマンスに影響するさまざまなMySQL設定について説明します。 便宜上、すべての変数はセクション(基本設定、制限、ストリーム設定、クエリキャッシュ、タイミング、バッファー、InnoDB)に分割されています。 まず、MySQLのバージョン4で変更されたいくつかの変数の名前を明確にします。ネットワークは、名前の古い変種と新しい変種に引き続き対応しているため、疑問が生じます。

そのため、バージョン4では、多くの変数の末尾に_sizeます。 これは、 thread_cache_size変数とBuffersセクションの変数に適用されます。 また、バージョン4以前の変数read_buffer_sizeと呼ばれていrecord_buffer 。 また、バージョン4以前の基本設定セクションのskip_external_locking変数はskip_external_lockingと呼ばれていskip_locking
変数は、値を持つ変数と変数フラグの2つの主要なカテゴリに分類されます。 値を持つ変数は、 variable = valueとして構成ファイルに書き込まれ、フラグ変数は単純に指定されます。 また、変数名に「 - 」と「 _ 」が使用されている場合があることにお気づきでしょう。 ハイフン付きの変数はサーバーの開始オプションであり、サーバーの実行中は変更できません(SETを使用)。 下線付きの変数はサーバーオプションであり、その場で変更できます。 「状態変数」について話している場合、または名前がVariable_Nameの形式で記述されている変数の値を確認することをお勧めする場合は、 SHOW STATUS LIKE "Variable_Name"リクエストを実行してこの変数の値を取得するか、追加のコメントがあるphpMyAdminのステータスタブを確認する必要がありますこの変数の値によって。
ここで、変数とその可能な値を見てみましょう。

基本設定



制限事項



ストリーム設定



キャッシュをリクエスト



クエリキャッシュは、キーがクエリであり、値がクエリの結果であるハッシュ配列と考えることができます。 結果に加えて、MySQLはテーブルのリストをキャッシュに保存し、その選択はキャッシュされます。 キャッシュ内に選択があるテーブルのいずれかで変更が発生した場合、MySQLはそのようなサンプルをキャッシュから削除します。 また、MySQLは結果が変わる可能性のあるクエリをキャッシュしません。
起動時に、MySQLはquery_cache_sizeのサイズのメモリブロックを割り当てます。 クエリを実行すると、結果の最初の行が受信されるとすぐに、サーバーはそれらのキャッシュを開始します。キャッシュにquery_cache_min_res_unitと等しいメモリブロックを割り当て、選択結果を書き込みます。 すべての選択がブロックに収まらない場合、サーバーは次のブロックを選択します。 記録の開始時に、MySQLは結果のサンプルのサイズを認識しないため、キャッシュに記録されたサンプルサイズがquery_cache_limitより大きい場合、記録が停止し、占有スペースが解放されます。したがって、選択の結果が大きいことが事前にわかっている場合は、ディレクティブで実行する必要がありますSQL_NO_CACHE

タイミング



バッファ


すべてのバッファには共通点が1つあります。バッファサイズが大きいためにデータがページファイルに送られる場合、バッファは害を及ぼすよりも害が大きくなります。 したがって、常に使用可能な物理RAMの量に注目してください。

構成ファイルの値はバイト単位で指定され、それぞれキロバイトとメガバイトをバイトに変換する必要があります。

Innodb



phpMyAdminを使用してサーバーの動作を監視することも便利です; [ ステータス]タブと[ 変数]タブが重要です。 さらに、phpMyAdminは、サーバー操作パラメーターに応じてさまざまな変数を調整することについてアドバイスします。
記事の準備では、公式文書と自分の頭に加えて、次の資料が使用されました。

興味を持って聞き 、コメント、発言、追加を読みます。
この記事の詳細については、 こちらをご覧ください

Source: https://habr.com/ru/post/J108418/


All Articles