インターネット上の情報の検索と私自身の試みを通じて、次のシステム パラメータがより重要であると考えています:
(1)、back_log:
MySQL には次のパラメータが必要です。接続の数。これは、MySQL のメイン スレッドが短期間に多くの接続リクエストを受信し、メイン スレッドが接続を確認して新しいスレッドを開始するのに (短時間ではありますが) 時間がかかる場合に機能します。
back_log 値は、MySQL が一時的に新しいリクエストへの応答を停止するまでに、短期間にスタックに保存できるリクエストの数を示します。短期間に多数の接続が予想される場合にのみ、この値を増やす必要があります。つまり、この値は、受信 TCP/IP 接続のリスニング キューのサイズです。オペレーティング システムには、このキュー サイズに対する独自の制限があります。 back_log をオペレーティング システムの制限よりも高く設定しようとしても、効果はありません。
ホスト プロセス リストを観察すると、接続されている xxx.xxx.xxx.xxx の値を増やす必要があります。やり残し。 。デフォルト値は50ですが、500に変更しました。
(2)、interactive_timeout:
サーバーが対話型接続を閉じる前に、対話型接続でのアクションを待機する秒数。対話型クライアントは、mysql_real_connect() の CLIENT_INTERACTIVE オプションを使用するクライアントとして定義されます。 デフォルト値は28800ですが、7200に変更しました。
(3)、key_buffer_size:
インデックス ブロックはバッファリングされ、すべてのスレッドによって共有されます。 key_buffer_size はインデックス ブロックに使用されるバッファ サイズです。(すべての読み取りと複数の書き込みに対して) インデックスをより適切に処理できるように、可能な限り増やしてください。サイズを大きくしすぎると、システムがページングを開始し、速度が大幅に低下します。デフォルト値は 8388600 (8M) ですが、MySQL ホストのメモリは 2GB なので、402649088 (400MB) に変更しました。
(4)、max_connections:
許可される同時クライアントの数。この値を増やすと、mysqld に必要なファイル記述子の数が増加します。この数を増やす必要があります。そうしないと、「接続が多すぎます」エラーが頻繁に表示されます。 デフォルト値は100ですが、1024に変更しました。
(5)、record_buffer:
順次スキャンを実行する各スレッドは、スキャンするテーブルごとにこのサイズのバッファを割り当てます。大量の連続スキャンを実行する場合は、この値を増やすことをお勧めします。デフォルト値は 131072 (128K) ですが、私は 16773120 (16M) に変更しました。
(6)、sort_buffer:
ソートする必要がある各スレッドには、次のいずれかが割り当てられます。サイズバッファ。この値を増やすと、ORDER BY または GROUP BY 操作が高速化します。デフォルト値は 2097144 (2M) ですが、16777208 (16M) に変更しました。
(7)、table_cache:
すべてのスレッドで開いているテーブルの数。この値を増やすと、mysqld に必要なファイル記述子の数が増加します。 MySQL では、開いている一意のテーブルごとに 2 つのファイル記述子が必要です。デフォルト値は64ですが、512に変更しました。
(8)、thread_cache_size:
再利用できるように保存されているスレッドの数。存在する場合は、新しいスレッドがキャッシュからフェッチされ、接続が切断されたときにスペースがあれば、クライアントのスレッドがキャッシュに配置されます。新しいスレッドが多数ある場合は、この変数の値を変更してパフォーマンスを向上させることができます。 Connections 状態と Threads_created 状態の変数を比較することで、この変数の役割を確認できます。 80に設定してみました。
(10)、wait_timeout:
サーバーが接続を閉じる前に、接続に対するアクションを待機する秒数。 デフォルト値は28800ですが、7200に変更しました。
注: パラメーターを調整するには、/etc/my.cnf ファイルを変更し、MySQL を再起動します。これは比較的慎重な作業であり、上記の結果は私の意見の一部にすぎません。自分のホストのハードウェア条件 (特にメモリ サイズ) に応じてさらに変更できます。