1. まったく同じデータベースやアプリケーションはありません。ここでは、チューニングしているデータベースが、高速なクエリ、優れたユーザー エクスペリエンス、および大量のトラフィックの処理を優先する「典型的な」Web サイトにサービスを提供するものであると仮定します。
2. サーバーを最適化する前に、データベースのバックアップを作成してください。
この記事では主に MySQL を最適化するための 3 つの簡単な調整を紹介します。必要な方は参考にしていただければ幸いです。
1. InnoDB ストレージ エンジンを使用する
まだ MyISAM ストレージ エンジンを使用している場合は、InnoDB に切り替えます。 InnoDB が MyISAM よりも優れている理由はたくさんあります。パフォーマンスが気になる場合は、物理メモリの使用方法を見てみましょう:
MyISAM: インデックスのみをメモリ内に保持します。
InnoDB: インデックスとデータをメモリに保存します。
結論: メモリに保存されたコンテンツには、ディスク上よりも高速にアクセスできます。
テーブル上のストレージ エンジンを変換する方法は次のとおりです:
ALTER TABLE table_name ENGINE=InnoDB;
注: 適切なインデックスはすべて作成しましたよね?パフォーマンスを向上させるには、インデックスの作成が常に最優先事項となります。
2. InnoDB にすべてのメモリを使用させます
my.cnf ファイルで MySQL 構成を編集できます。 innodb_buffer_pool_size パラメータを使用して、サーバー上で InnoDB が使用できる物理メモリの量を構成します。
これに関して受け入れられている「経験則」 (サーバーが MySQL のみを実行していると仮定して) は、サーバーの物理メモリの 80% に設定することです。スワップ パーティションを使用せずに通常に実行するのに十分なメモリがオペレーティング システムにあることを確認した後、できるだけ多くの物理メモリを MySQL に割り当てます。
つまり、サーバーの物理メモリが 32 GB の場合、そのパラメータを最大 25 GB に設定できます。
innodb_buffer_pool_size = 25600M
*注意: (1) サーバーのメモリが小さく、1 GB 未満の場合。この記事の方法を適用するには、サーバーをアップグレードする必要があります。 (2) サーバーに特に大容量のメモリ (たとえば 200 GB) が搭載されている場合、常識的に考えて、オペレーティング システム用に最大 40 GB のメモリを予約する必要はありません。 *
3. InnoDB マルチタスクを実行します
サーバー上のパラメーター innodb_buffer_pool_size の構成が 1 GB を超える場合、InnoDB バッファー プールはパラメーター innodb_buffer_pool_instances の設定に従って複数に分割されます。
複数のバッファー プールを持つ利点は次のとおりです:
複数のスレッドが同時にバッファー プールにアクセスすると、ボトルネックが発生する可能性があります。複数のバッファ プールを有効にすることで、この競合を最小限に抑えることができます:
バッファ プールの数に関する公式推奨事項は次のとおりです:
最良の結果を得るには、innodb_buffer_pool_instances と innodb_buffer_pool_size の設定を考慮して、各インスタンスに少なくとも 1 つのバッファ プールが必要であることを確認してください1GB以上。
したがって、この例では、物理メモリ 32 GB のサーバー上でパラメータ innodb_buffer_pool_size を 25 GB に設定します。適切な設定は 25600M / 24 = 1.06 GB です
innodb_buffer_pool_instances = 24
注意!
my.cnf ファイルを変更した後、それを有効にするために MySQL を再起動する必要があります:
sudo service mysql restart
これらのパラメータを最適化するためのより科学的な方法がありますが、これらの点は一般的なガイドラインとして適用でき、MySQL サーバーをパフォーマンスが向上します。
関連する推奨事項:
MySQL を最適化するために Innodb のデータ ページ サイズを変更する方法の詳細な例
以上がMySQL を最適化する 3 つの簡単な方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。