MySQL のパフォーマンスの最適化には、さまざまな側面が含まれます。この記事では、MySQL のいくつかの主要なパラメータについて説明します。これらのパラメータは、ある程度、MySQL データベースのパフォーマンスを決定する重要なパラメータです。 MySQL のパフォーマンスの最適化を伴うデータベースの管理と開発中に、パフォーマンスの問題が頻繁に発生します。インターネット上の情報の検索と著者自身の試みを通じて、次のシステム パラメータがより重要であると考えています。
主要パラメータ 1: back_log
MySQL に必要な接続の数。これは、MySQL のメイン スレッドが短期間に多くの接続リクエストを受信し、メイン スレッドが接続を確認して新しいスレッドを開始するのに (短時間ではありますが) 時間がかかる場合に機能します。
back_log 値は、MySQL が一時的に新しいリクエストへの応答を停止するまでに、短期間にスタックに保存できるリクエストの数を示します。短期間に多くの接続が予想される場合にのみ、この値を増やす必要があります。つまり、この値は、受信 TCP/IP 接続のリスニング キューのサイズです。オペレーティング システムには、このキュー サイズに対する独自の制限があります。 back_log をオペレーティング システムの制限よりも高く設定しようとしても、効果はありません。
ホスト プロセス リストを観察して、多数の認証されていないユーザー | xxx.xxx.xxx.xxx が見つかった場合は、back_log の値を増やす必要があります。デフォルト値は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に設定してみました。
主要パラメータ 9: wait_timeout
接続を閉じる前にサーバーが接続上のアクションを待機する秒数。 デフォルト値は28800ですが、7200に変更しました。
注: パラメータの調整は、/etc/my.cnf ファイルを変更し、MySQL を再起動することで実現できます。これは比較的慎重な作業であり、上記の結果は私の意見の一部にすぎません。自分のホストのハードウェア条件 (特にメモリ サイズ) に応じてさらに変更できます。