MySQLのINNODBエンジンパフォーマンス最適化の概要2
にhttps://www.roamway.com/?p=421mysqlのパフォーマンス最適化の前半を分析しました,今日は後半を分析します。
9.クエリキャッシュ(クエリキャッシュ): 「qcache%」のようなshow globalstatusを実行する; クエリキャッシュを取得できます,次のように:
これらのアイテムの値がすべて0の場合
クエリキャッシュが構成ファイルに設定されていないことを説明する,設定ファイルを開いてください,その後、[mysqld]フィールド構成
query_cache_type = 1
query_cache_size = x
(1クエリキャッシュが有効になっていることを示します,0クエリキャッシュを閉じることを示します),保存して終了,mysqlを再起動します.
「qcache%」のようなshow globalstatusを再度実行します; 指標に価値があることがわかります。
分析: Qcache_lowmem_prunesの値が大きい場合,そしてfree_memoryは小さい,クエリキャッシュメモリが不足しています,必要
query_cache_sizeの値を増やします,32Mなど,64Mまたは128Mなど。,需要に応じて。 Qcache_lowmem_prunesの場合
すごい価値,free_blocksは小さくありません,そしてfree_memoryで十分です,断片化が多すぎることを意味します,FLUSH QUERYCACHEの実装
キャッシュ内のデフラグ。
要するに,Qcache_lowmem_prunesを0または非常に小さい値に維持するには。
クエリキャッシュの状態は、次の値で知ることができます.
キャッシュの断片化率
Qcache_free_blocks / Qcache_total_blocks * 100%< 20%
キャッシュ使用率
(query_cache_size – Qcache_free_memory) / query_cache_size * 100%高いほど良い
キャッシュヒット率
(Qcache_hits – Qcache_inserts) / Qcache_hits * 100% 高いほど良い
10.Innodb_buffer_poolヒット率:执行「Innodb_buffer_pool_%」のようなステータスを表示する;
バッファプールのヒット率を計算する,ヒット率が99.9%以上
innodb_buffer_read_hits = (1 – innodb_buffer_pool_reads /
innodb_buffer_pool_read_requests) * 100%
innodb_buffer_pool_pages_freeが0であることが判明した場合,またはinnodb_buffer_pool_pages_freeが説明しました
innodb_buffer_pool_pages_totalの割合が小さすぎます(たとえば、30%未満),増やす必要があります
innodb_buffer_pool_size値。
11.テーブルスキャンレート:执行「handler_read%」のようなグローバルステータスを表示する;と
「com_select」のようなグローバルステータスを表示する;
テーブルスキャンレート= Handler_read_rnd_nextの場合 / Com_selectの値が4000より大きい
実行されたテーブルスキャンが多すぎることを示します,インデックスが作成されていない可能性があります,read_buffer_sizeを増やします
価値にはいくつかの利点があります,2Mなど,4Mなど,ただし、8MBを超えない方がよい ,また、sqlステートメントを確認する必要があります,
適切な調整を行う。
12.遅いクエリ:执行は「%slow%」のような変数を表示します;
スロークエリログ機能が有効になっているかどうかを確認できます,オンにすると、特定のパスが表示されます。
执行は「%slow%」のようなグローバルステータスを表示します; 実行された低速クエリの数を表示する,遅いクエリログを介して,
どのSQLステートメントに問題があるかを知ることができます。