Commit e4205fba authored by Marko Mäkelä's avatar Marko Mäkelä

MDEV-24536 innodb_idle_flush_pct has no effect

The parameter innodb_idle_flush_pct that was introduced in
MariaDB Server 10.1.2 by MDEV-6932 has no effect ever since
the InnoDB changes from MySQL 5.7.9 were applied in
commit 2e814d47.

Let us declare the parameter as MARIADB_REMOVED_OPTION.
For earlier versions, commit ea9cd97f
declared the parameter deprecated.
parent 2c845e0b
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
......@@ -188,15 +188,6 @@
VARIABLE_COMMENT Total memory allocated for InnoDB Fulltext Search cache
NUMERIC_MIN_VALUE 32000000
NUMERIC_MAX_VALUE 1600000000
@@ -1057,7 +1057,7 @@
SESSION_VALUE NULL
DEFAULT_VALUE 100
VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BIGINT UNSIGNED
+VARIABLE_TYPE INT UNSIGNED
VARIABLE_COMMENT Up to what percentage of dirty pages should be flushed when innodb finds it has spare resources to do so.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 100
@@ -1093,22 +1093,22 @@
SESSION_VALUE NULL
DEFAULT_VALUE 200
......
......@@ -1053,18 +1053,6 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME INNODB_IDLE_FLUSH_PCT
SESSION_VALUE NULL
DEFAULT_VALUE 100
VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Up to what percentage of dirty pages should be flushed when innodb finds it has spare resources to do so.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 100
NUMERIC_BLOCK_SIZE 0
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME INNODB_IMMEDIATE_SCRUB_DATA_UNCOMPRESSED
SESSION_VALUE NULL
DEFAULT_VALUE OFF
......
#
# 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;
/* Copyright (c) 2000, 2015, Oracle and/or its affiliates.
Copyright (c) 2008, 2020, MariaDB
Copyright (c) 2008, 2021, MariaDB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
......@@ -4979,6 +4979,7 @@ static int init_server_components()
#if defined(__linux__)
MARIADB_REMOVED_OPTION("super-large-pages"),
#endif
MARIADB_REMOVED_OPTION("innodb-idle-flush-pct"),
MARIADB_REMOVED_OPTION("innodb-locks-unsafe-for-binlog"),
MARIADB_REMOVED_OPTION("innodb-rollback-segments"),
MARIADB_REMOVED_OPTION("innodb-stats-sample-pages"),
......
......@@ -76,6 +76,7 @@ static const char *removed_variables[] =
"innodb_ibuf_accel_rate",
"innodb_ibuf_active_contract",
"innodb_ibuf_max_size",
"innodb_idle_flush_pct",
"innodb_import_table_from_xtrabackup",
"innodb_instrument_semaphores",
"innodb_kill_idle_transaction",
......
......@@ -18892,13 +18892,6 @@ static MYSQL_SYSVAR_ULONG(io_capacity_max, srv_max_io_capacity,
SRV_MAX_IO_CAPACITY_DUMMY_DEFAULT, 100,
SRV_MAX_IO_CAPACITY_LIMIT, 0);
static MYSQL_SYSVAR_ULONG(idle_flush_pct,
srv_idle_flush_pct,
PLUGIN_VAR_RQCMDARG,
"Up to what percentage of dirty pages should be flushed when innodb "
"finds it has spare resources to do so.",
NULL, NULL, 100, 0, 100, 0);
#ifdef UNIV_DEBUG
static MYSQL_SYSVAR_BOOL(background_drop_list_empty,
innodb_background_drop_list_empty,
......@@ -20057,7 +20050,6 @@ static struct st_mysql_sys_var* innobase_system_variables[]= {
MYSQL_SYSVAR(io_capacity),
MYSQL_SYSVAR(io_capacity_max),
MYSQL_SYSVAR(page_cleaners),
MYSQL_SYSVAR(idle_flush_pct),
MYSQL_SYSVAR(monitor_enable),
MYSQL_SYSVAR(monitor_disable),
MYSQL_SYSVAR(monitor_reset),
......
......@@ -348,8 +348,6 @@ extern double srv_defragment_fill_factor;
extern uint srv_defragment_frequency;
extern ulonglong srv_defragment_interval;
extern ulong srv_idle_flush_pct;
extern uint srv_change_buffer_max_size;
/* Number of IO operations per second the server can do */
......
......@@ -224,9 +224,6 @@ ulong srv_buf_pool_load_pages_abort = LONG_MAX;
/** Lock table size in bytes */
ulint srv_lock_table_size = ULINT_MAX;
/** innodb_idle_flush_pct */
ulong srv_idle_flush_pct;
/** innodb_read_io_threads */
uint srv_n_read_io_threads;
/** innodb_write_io_threads */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment