MySQLINNODBエンジンのパフォーマンス最適化の概要1
1.同時:データにはこれまでにいくつの接続がありますか,mysqlにログインしてから実行する
「max_used_connections」のようなグローバルステータスを表示する;
「max_connections」などの変数を表示する;
一般的,以下の関係が満たされます:
max_used_connections / max_connections * 100% <= 85%
2.Innodb_buffer_pool:これは、innodbエンジンのmysqlパフォーマンスにおいて決定的な役割を果たします。
Innodbはデータとインデックスをキャッシュするため,公式の推奨事項は、 70-80% 使用可能なメモリ。
商売が少ない場合,そして爆発しません,innodb_buffer_pool_sizeを大きすぎるように設定する必要はありません。
3.innodb_log_file_size:構成ファイルのプロンプトは、innodb_buffer_pool_sizeの25%に設定されています
書き込み負荷が高い状況では重要です。値が大きいほど、パフォーマンスが高くなります,ただし、回復時間が長くなる可能性があります。
4.innodb_flush_logs_at_trx_commit:
デフォルト値は 1,これは、コミットごとの更新トランザクションを意味します(または各トランザクション外のステートメント)ディスクにフラッシュされます,
これは非常にリソースを消費します。に設定されている場合 2 ,つまり、最初にログをオペレーティングシステムのキャッシュにフラッシュします,その後、ログは
毎秒ディスクにフラッシュ,したがって、通常、1秒あたり1〜2回の更新の消費は失われません。。
5.innodb_log_buffer_size:この値は、高い同時実行性を示します,ログキャッシュが1秒以内にいっぱいになった場合
この値,ib_logfilexのメモリからディスクにすぐにフラッシュします。この値は通常8Mに設定されます。,によると
必要に応じて実際の状況に対処する。
6.一時テーブル: 执行「created_tmp%」のようなグローバルステータスを表示; 現れる
毎回一時テーブルを作成する,Created_tmp_tablesが増加します,ディスク上に一時テーブルを作成する場合,
Created_tmp_disk_tablesも増加しました,Created_tmp_filesは、MySQLサービスによって作成された一時ファイルを表します
ファイル数:帰属Created_tmp_disk_tables / Created_tmp_tables * 100% <= 25%
いつ,健康状態が。25%以上の場合,説明tmp_table_sizeおよびmax_heap_table_size
値が小さい,追加する必要があります,両方を特定の値に増やします,たとえば、それらはすべて256Mに設定されています(実際、すでに非常に大きいです),
Created_tmp_disk_tablesの場合 / Created_tmp_tables * 100% 値が下がらない,
SQLステートメントに問題がある可能性があることを説明する,ハードディスク一時テーブルの強制使用。実行することによって
変数を表示します。 (‘tmp_table_size’, ‘max_heap_table_size’);
tmp_table_sizeとmax_heap_table_sizeのサイズを知っている。
7.テーブルを開く:'open%tables%'のようなshowglobalstatusを実行します; 次のように表示されます:
Open_tablesは、開いているテーブルの数を表します,Opened_tablesは、開かれたテーブルの数を示します,Opened_tablesの数が多すぎる場合,
構成のtable_cache値が小さすぎる可能性があることに注意してください。大きくする,512など.
'open%tables%'のようなshowglobalstatusを実行する;「table_cache」のような変数を表示します;
Open_tablesを探す ,Opened_tables ,table_cache(5.1.3この値の後、table_open_cacheと呼ばれます)の値,
それらは以下の関係を満たします。
open_tables / opens_tables * 100% >= 85%
open_tables / table_cache(5.1.3この値の後、table_open_cacheと呼ばれます) * 100% <= 95%
8.プロセスの使用法: 'Thread%'のようなshowglobalstatusを実行します;現れる
thread_createdは、作成されたスレッドの数を示します,Threads_createdの値が大きすぎることがわかった場合,
MySQLサーバーがスレッドを作成および破棄していることを示します,これはより多くのリソースを消費します,適切に増やすことができます
構成ファイルのthread_cache_size値(もしも[mysqld]フィールドの下にそのようなアイテムはありません,自分で追加してください)。
状況に応じて16、32、64に増やすなど。'thread_cache_size'のようなshow変数を実行する;
現在の構成ファイルに設定されているthread_cache_sizeの値を判別できます。。使用Threads_created/Connections
キャッシュヒット率を計算する.