ホームページ >データベース >mysql チュートリアル >MySQLメモリパラメータの最適化
1. キーバッファ
A. パラメータ key_buffer_size は、myisam エンジンのテーブルにのみ影響します。
B. このパラメータは、インデックスの読み取り速度に影響します。 2 つのステータス値は '%key_read%' のようなステータスを示し、key_reads は読み取りディスクの数を表します。 key_buffer_size を見積もるもう 1 つの方法は、データベース内の各テーブルのインデックスが占めるスペースを合計することです。
2. クエリキャッシュ
A. クエリキャッシュは主に SELECT ステートメントとクエリ結果をバッファに保存します。
B. パラメータの適切な設定は、' のようなステータスを確認するために使用できます。 %qcache%' 現在キャッシュされているアイテムを示します 数値
Qcache inserts 20649006
Qcache hit 79060095 クエリの繰り返し率がかなり高いようです
Qcache lowmem PRunes 617913 キャッシュが多すぎるケースが非常に多いですlow
Qcache がキャッシュされていません 189896
Q キャッシュの空きメモリ 18573912 現在の残りのキャッシュスペース
Qcache の空きブロック 5328 この数値は少し大きく、多くのフラグメントがあるようです
Qcache の合計ブロック 30953
F 結果は、クエリが次のことを示しています。キャッシュ値を大きく設定する必要があります。
G. Qcache_free_blocks の値が非常に大きい場合は、バッファー内に多くのフラグメントがあることを示します。これは、バッファリングが不十分であることが多いことを示します。同時に、Qcache_hits の値が非常に大きいことは、クエリ バッファが非常に頻繁に使用されていることを示しています。この値が小さい場合は、クエリのバッファ サイズを増やす必要があります。この場合、クエリ バッファリングの使用は効率に影響するため、クエリ バッファリングを使用しないことを検討できます。さらに、SQL_NO_CACHE を SELECT ステートメントに追加すると、クエリ バッファが使用されていないことを明確に示すことができます。
3. テーブル キャッシュ
A. table_cache はテーブル キャッシュのサイズを指定します。
B. MySQL がテーブル バッファーにスペースがある場合、テーブルが開かれてそこに配置されます。テーブルの内容へのアクセス;
C. ピーク時にステータス値 Open_tables と Opened_tables を確認することで、table_cache の値を増やす必要があるかどうかを判断できます。 open_tables が table_cache と等しく、open_tables が増加していることがわかった場合は、table_cache の値を盲目的に大きな値に設定することはできないことに注意してください。設定が高すぎると、ファイル記述子が不足し、パフォーマンスが不安定になったり、接続障害が発生したりする可能性があります。
4. Innodb バッファ
A. innodb_buffer_pool_size - これは Innodb テーブルにとって非常に重要です。 Innodb テーブルは、MyISAM テーブルよりもバッファリングの影響を受けやすくなります。 MyISAM はデフォルトの key_buffer_size 設定で正常に実行できますが、Innodb はデフォルトの innodb_buffer_pool_size 設定ではカタツムリのペースで実行されます。
B. Innodb はデータとインデックスの両方をキャッシュするため、オペレーティング システムに大量の MySQL データベース メモリを残す必要はありません。そのため、Innodb のみを使用する必要がある場合は、メモリを最大 70 ~ 80% に設定できます。使用可能なメモリ。
C. データ量が大きくなく、劇的に増加しない場合は、innodb_buffer_pool_size を大きく設定する必要はありません。
D. innodb_log_file_size は、書き込み負荷が高い場合、特に大きなデータセットの場合に重要です。値が大きいほどパフォーマンスは向上しますが、回復時間が長くなる可能性があることに注意してください。サーバーのサイズに応じて、通常は 64 ~ 512MB に設定します。 innodb_log_buffer_size のデフォルト設定では、中程度の書き込み負荷と短いトランザクションの下で許容可能なサーバー パフォーマンスが提供されます。
E. Innodb_flush_logs_at_trx_commit が MyISAM より 1000 倍遅いことを心配していますか?おそらくこのパラメータを変更するのを忘れているようです。デフォルト値は 1 です。これは、コミットされたすべての更新トランザクション (またはトランザクション外のすべてのステートメント) がディスクにフラッシュされることを意味します。これは、特にバッテリーバックアップのキャッシュがない場合、非常にリソースを大量に消費します。多くのアプリケーション、特に MyISAM から変換されたアプリケーションでは、値を 2 に設定しても問題ありません。これは、ログがディスクにフラッシュされず、オペレーティング システムのキャッシュにのみフラッシュされることを意味します。ログは依然として毎秒ディスクにフラッシュされるため、通常は 1 秒あたり 1 ~ 2 回の更新のコストが失われることはありません。 0 に設定すると速度は大幅に向上しますが、安全性も比較的低くなります。 MySQL サーバーがクラッシュすると、一部のトランザクションが失われます。 2 に設定すると、オペレーティング システムのキャッシュにフラッシュされたトランザクションの部分が失われます。
上記は Mysql メモリ パラメータの最適化の内容です。その他の関連記事については、PHP 中国語 Web サイト (www.php.cn) に注目してください。