web-dev-qa-db-ja.com

InnoDBバッファープールヒット率

http://cherry.world.edoors.com/COBFKUqnUdBY で示されているように、次のSQLクエリでバッファヒット率を取得できます。

SELECT round ((P2.variable_value / P1.variable_value),4), 
P2.variable_value, P1.variable_value
FROM information_schema.GLOBAL_STATUS P1,
information_schema.GLOBAL_STATUS P2
WHERE P1. variable_name = 'innodb_buffer_pool_read_requests'
AND P2. variable_name = 'innodb_buffer_pool_reads'; 

質問

  • そのクエリによってバッファヒット率はどの期間から与えられますか?データベースエンジンの起動から今まで?
  • 特定の期間からバッファヒット率を取得する可能性はありますか? (例:最後の10分間)
2
Michał Herman

稼働時間(最後のMySQL起動) 以降のヒット率

過去10分間を取得するためにできることは2つあります

方法#1

すべてのステータス値をフラッシュ、10分間スリープ、クエリを実行

FLUSH STATUS;
SELECT SLEEP(600) INTO @x;
SELECT round ((P2.variable_value / P1.variable_value),4), 
P2.variable_value, P1.variable_value
FROM information_schema.GLOBAL_STATUS P1,
information_schema.GLOBAL_STATUS P2
WHERE P1. variable_name = 'innodb_buffer_pool_read_requests'
AND P2. variable_name = 'innodb_buffer_pool_reads'; 

方法#2

キャプチャ innodb_buffer_pool_read_requestsinnodb_buffer_pool_reads 、スリープ10分、クエリの実行innodb_buffer_pool_read_requestsとinnodb_buffer_pool_readsの違い

SELECT
    P1.variable_value,P2.variable_value
INTO
    @rqs,@rds
FROM information_schema.GLOBAL_STATUS P1,
information_schema.GLOBAL_STATUS P2
WHERE P1.variable_name = 'innodb_buffer_pool_read_requests'
AND P2.variable_name = 'innodb_buffer_pool_reads'; 
SELECT SLEEP(600) INTO @x;
SELECT round (((P2.variable_value - @rds) / (P1.variable_value - @rqs)),4), 
P2.variable_value, P1.variable_value
FROM information_schema.GLOBAL_STATUS P1,
information_schema.GLOBAL_STATUS P2
WHERE P1.variable_name = 'innodb_buffer_pool_read_requests'
AND P2.variable_name = 'innodb_buffer_pool_reads'; 

試してみる !!!

2
RolandoMySQLDBA