Browse Source
MDEV-6932: Enable Lazy Flushing
MDEV-6932: Enable Lazy Flushing
Merge Facebook commit 4f3e0343fd
authored by Steaphan Greene from https://github.com/facebook/mysql-5.6
Adds innodb_idle_flush_pct to enable tuning of the page flushing rate
when the system is relatively idle. We care about this, since doing
extra unnecessary flash writes shortens the lifespan of the flash.
pull/12/merge
11 changed files with 189 additions and 22 deletions
-
77mysql-test/suite/sys_vars/r/innodb_idle_flush_pct_basic.result
-
14mysql-test/suite/sys_vars/r/sysvars_innodb.result
-
63mysql-test/suite/sys_vars/t/innodb_idle_flush_pct_basic.test
-
17storage/innobase/buf/buf0flu.cc
-
8storage/innobase/handler/ha_innodb.cc
-
2storage/innobase/include/srv0srv.h
-
2storage/innobase/srv/srv0srv.cc
-
16storage/xtradb/buf/buf0flu.cc
-
8storage/xtradb/handler/ha_innodb.cc
-
2storage/xtradb/include/srv0srv.h
-
2storage/xtradb/srv/srv0srv.cc
@ -0,0 +1,77 @@ |
|||
SET @start_global_value = @@global.innodb_idle_flush_pct; |
|||
SELECT @start_global_value; |
|||
@start_global_value |
|||
100 |
|||
Valid values are between 0 and 100 |
|||
select @@global.innodb_idle_flush_pct between 0 and 100; |
|||
@@global.innodb_idle_flush_pct between 0 and 100 |
|||
1 |
|||
select @@global.innodb_idle_flush_pct; |
|||
@@global.innodb_idle_flush_pct |
|||
100 |
|||
select @@session.innodb_idle_flush_pct; |
|||
ERROR HY000: Variable 'innodb_idle_flush_pct' is a GLOBAL variable |
|||
show global variables like 'innodb_idle_flush_pct'; |
|||
Variable_name Value |
|||
innodb_idle_flush_pct 100 |
|||
show session variables like 'innodb_idle_flush_pct'; |
|||
Variable_name Value |
|||
innodb_idle_flush_pct 100 |
|||
select * from information_schema.global_variables where variable_name='innodb_idle_flush_pct'; |
|||
VARIABLE_NAME VARIABLE_VALUE |
|||
INNODB_IDLE_FLUSH_PCT 100 |
|||
select * from information_schema.session_variables where variable_name='innodb_idle_flush_pct'; |
|||
VARIABLE_NAME VARIABLE_VALUE |
|||
INNODB_IDLE_FLUSH_PCT 100 |
|||
set global innodb_idle_flush_pct=10; |
|||
select @@global.innodb_idle_flush_pct; |
|||
@@global.innodb_idle_flush_pct |
|||
10 |
|||
select * from information_schema.global_variables where variable_name='innodb_idle_flush_pct'; |
|||
VARIABLE_NAME VARIABLE_VALUE |
|||
INNODB_IDLE_FLUSH_PCT 10 |
|||
select * from information_schema.session_variables where variable_name='innodb_idle_flush_pct'; |
|||
VARIABLE_NAME VARIABLE_VALUE |
|||
INNODB_IDLE_FLUSH_PCT 10 |
|||
set session innodb_idle_flush_pct=1; |
|||
ERROR HY000: Variable 'innodb_idle_flush_pct' is a GLOBAL variable and should be set with SET GLOBAL |
|||
set global innodb_idle_flush_pct=1.1; |
|||
ERROR 42000: Incorrect argument type to variable 'innodb_idle_flush_pct' |
|||
set global innodb_idle_flush_pct=1e1; |
|||
ERROR 42000: Incorrect argument type to variable 'innodb_idle_flush_pct' |
|||
set global innodb_idle_flush_pct="bar"; |
|||
ERROR 42000: Incorrect argument type to variable 'innodb_idle_flush_pct' |
|||
set global innodb_idle_flush_pct=-7; |
|||
Warnings: |
|||
Warning 1292 Truncated incorrect innodb_idle_flush_pct value: '-7' |
|||
select @@global.innodb_idle_flush_pct; |
|||
@@global.innodb_idle_flush_pct |
|||
0 |
|||
select * from information_schema.global_variables where variable_name='innodb_idle_flush_pct'; |
|||
VARIABLE_NAME VARIABLE_VALUE |
|||
INNODB_IDLE_FLUSH_PCT 0 |
|||
set global innodb_idle_flush_pct=106; |
|||
Warnings: |
|||
Warning 1292 Truncated incorrect innodb_idle_flush_pct value: '106' |
|||
select @@global.innodb_idle_flush_pct; |
|||
@@global.innodb_idle_flush_pct |
|||
100 |
|||
select * from information_schema.global_variables where variable_name='innodb_idle_flush_pct'; |
|||
VARIABLE_NAME VARIABLE_VALUE |
|||
INNODB_IDLE_FLUSH_PCT 100 |
|||
set global innodb_idle_flush_pct=0; |
|||
select @@global.innodb_idle_flush_pct; |
|||
@@global.innodb_idle_flush_pct |
|||
0 |
|||
set global innodb_idle_flush_pct=100; |
|||
select @@global.innodb_idle_flush_pct; |
|||
@@global.innodb_idle_flush_pct |
|||
100 |
|||
set global innodb_idle_flush_pct=DEFAULT; |
|||
select @@global.innodb_idle_flush_pct; |
|||
@@global.innodb_idle_flush_pct |
|||
100 |
|||
SET @@global.innodb_idle_flush_pct = @start_global_value; |
|||
SELECT @@global.innodb_idle_flush_pct; |
|||
@@global.innodb_idle_flush_pct |
|||
100 |
@ -0,0 +1,63 @@ |
|||
|
|||
# |
|||
# 2013-04-01 - Added |
|||
# |
|||
|
|||
--source include/have_innodb.inc |
|||
|
|||
SET @start_global_value = @@global.innodb_idle_flush_pct; |
|||
SELECT @start_global_value; |
|||
|
|||
# |
|||
# exists as global only |
|||
# |
|||
--echo Valid values are between 0 and 100 |
|||
select @@global.innodb_idle_flush_pct between 0 and 100; |
|||
select @@global.innodb_idle_flush_pct; |
|||
--error ER_INCORRECT_GLOBAL_LOCAL_VAR |
|||
select @@session.innodb_idle_flush_pct; |
|||
show global variables like 'innodb_idle_flush_pct'; |
|||
show session variables like 'innodb_idle_flush_pct'; |
|||
select * from information_schema.global_variables where variable_name='innodb_idle_flush_pct'; |
|||
select * from information_schema.session_variables where variable_name='innodb_idle_flush_pct'; |
|||
|
|||
# |
|||
# show that it's writable |
|||
# |
|||
set global innodb_idle_flush_pct=10; |
|||
select @@global.innodb_idle_flush_pct; |
|||
select * from information_schema.global_variables where variable_name='innodb_idle_flush_pct'; |
|||
select * from information_schema.session_variables where variable_name='innodb_idle_flush_pct'; |
|||
--error ER_GLOBAL_VARIABLE |
|||
set session innodb_idle_flush_pct=1; |
|||
|
|||
# |
|||
# incorrect types |
|||
# |
|||
--error ER_WRONG_TYPE_FOR_VAR |
|||
set global innodb_idle_flush_pct=1.1; |
|||
--error ER_WRONG_TYPE_FOR_VAR |
|||
set global innodb_idle_flush_pct=1e1; |
|||
--error ER_WRONG_TYPE_FOR_VAR |
|||
set global innodb_idle_flush_pct="bar"; |
|||
|
|||
set global innodb_idle_flush_pct=-7; |
|||
select @@global.innodb_idle_flush_pct; |
|||
select * from information_schema.global_variables where variable_name='innodb_idle_flush_pct'; |
|||
set global innodb_idle_flush_pct=106; |
|||
select @@global.innodb_idle_flush_pct; |
|||
select * from information_schema.global_variables where variable_name='innodb_idle_flush_pct'; |
|||
|
|||
# |
|||
# min/max/DEFAULT values |
|||
# |
|||
set global innodb_idle_flush_pct=0; |
|||
select @@global.innodb_idle_flush_pct; |
|||
set global innodb_idle_flush_pct=100; |
|||
select @@global.innodb_idle_flush_pct; |
|||
set global innodb_idle_flush_pct=DEFAULT; |
|||
select @@global.innodb_idle_flush_pct; |
|||
|
|||
|
|||
SET @@global.innodb_idle_flush_pct = @start_global_value; |
|||
SELECT @@global.innodb_idle_flush_pct; |
Write
Preview
Loading…
Cancel
Save
Reference in new issue