mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-7035: Remove innodb_io_capacity setting depending on
setting of innodb_io_capacity_max (a) Changed the behaviour so that if you set innodb_io_capacity to a value > innodb_io_capacity_max that the value is accepted AND that innodb_io_capacity_max = innodb_io_capacity * 2. (b) If someone wants to reduce innodb_io_capacity_max and reduce it below innodb_io_capacity then innodb_io_capacity should be reduced to the same level as innodb_io_capacity_max. In both cases give a warning to user.
This commit is contained in:
@ -45,27 +45,42 @@ set global innodb_io_capacity_max=1e1;
|
|||||||
ERROR 42000: Incorrect argument type to variable 'innodb_io_capacity_max'
|
ERROR 42000: Incorrect argument type to variable 'innodb_io_capacity_max'
|
||||||
set global innodb_io_capacity_max="foo";
|
set global innodb_io_capacity_max="foo";
|
||||||
ERROR 42000: Incorrect argument type to variable 'innodb_io_capacity_max'
|
ERROR 42000: Incorrect argument type to variable 'innodb_io_capacity_max'
|
||||||
set global innodb_io_capacity_max=@start_innodb_capacity - 1;
|
set global innodb_io_capacity_max=1000;
|
||||||
|
set global innodb_io_capacity=500;
|
||||||
|
set global innodb_io_capacity_max=400;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1210 innodb_io_capacity_max cannot be set lower than innodb_io_capacity.
|
Warning 1210 Setting innodb_io_capacity_max 400 lower than innodb_io_capacity 500.
|
||||||
Warning 1210 Setting innodb_io_capacity_max to 200
|
Warning 1210 Setting innodb_io_capacity to 400
|
||||||
select @@global.innodb_io_capacity_max;
|
select @@global.innodb_io_capacity_max;
|
||||||
@@global.innodb_io_capacity_max
|
@@global.innodb_io_capacity_max
|
||||||
200
|
400
|
||||||
|
select @@global.innodb_io_capacity;
|
||||||
|
@@global.innodb_io_capacity
|
||||||
|
400
|
||||||
select * from information_schema.global_variables where variable_name='innodb_io_capacity_max';
|
select * from information_schema.global_variables where variable_name='innodb_io_capacity_max';
|
||||||
VARIABLE_NAME VARIABLE_VALUE
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
INNODB_IO_CAPACITY_MAX 200
|
INNODB_IO_CAPACITY_MAX 400
|
||||||
set global innodb_io_capacity_max=-7;
|
select * from information_schema.global_variables where variable_name='innodb_io_capacity';
|
||||||
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
|
INNODB_IO_CAPACITY 400
|
||||||
|
set global innodb_io_capacity_max=1000;
|
||||||
|
set global innodb_io_capacity=500;
|
||||||
|
set global innodb_io_capacity=1400;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1292 Truncated incorrect innodb_io_capacity_max value: '-7'
|
Warning 1210 Setting innodb_io_capacity to 1400 higher than innodb_io_capacity_max 1000
|
||||||
Warning 1210 innodb_io_capacity_max cannot be set lower than innodb_io_capacity.
|
Warning 1210 Setting innodb_max_io_capacity to 2800
|
||||||
Warning 1210 Setting innodb_io_capacity_max to 200
|
|
||||||
select @@global.innodb_io_capacity_max;
|
select @@global.innodb_io_capacity_max;
|
||||||
@@global.innodb_io_capacity_max
|
@@global.innodb_io_capacity_max
|
||||||
200
|
2800
|
||||||
|
select @@global.innodb_io_capacity;
|
||||||
|
@@global.innodb_io_capacity
|
||||||
|
1400
|
||||||
select * from information_schema.global_variables where variable_name='innodb_io_capacity_max';
|
select * from information_schema.global_variables where variable_name='innodb_io_capacity_max';
|
||||||
VARIABLE_NAME VARIABLE_VALUE
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
INNODB_IO_CAPACITY_MAX 200
|
INNODB_IO_CAPACITY_MAX 2800
|
||||||
|
select * from information_schema.global_variables where variable_name='innodb_io_capacity';
|
||||||
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
|
INNODB_IO_CAPACITY 1400
|
||||||
set global innodb_io_capacity=100;
|
set global innodb_io_capacity=100;
|
||||||
set global innodb_io_capacity_max=100;
|
set global innodb_io_capacity_max=100;
|
||||||
select @@global.innodb_io_capacity_max;
|
select @@global.innodb_io_capacity_max;
|
||||||
|
@ -25,7 +25,7 @@ select * from information_schema.global_variables where variable_name='innodb_io
|
|||||||
select * from information_schema.session_variables where variable_name='innodb_io_capacity_max';
|
select * from information_schema.session_variables where variable_name='innodb_io_capacity_max';
|
||||||
|
|
||||||
#
|
#
|
||||||
# show that it's writable. Allowed value cannot be lower than innodb_io_capacity
|
# show that it's writable.
|
||||||
#
|
#
|
||||||
set global innodb_io_capacity_max=@start_innodb_capacity + 1;
|
set global innodb_io_capacity_max=@start_innodb_capacity + 1;
|
||||||
select @@global.innodb_io_capacity_max;
|
select @@global.innodb_io_capacity_max;
|
||||||
@ -45,15 +45,26 @@ set global innodb_io_capacity_max=1e1;
|
|||||||
set global innodb_io_capacity_max="foo";
|
set global innodb_io_capacity_max="foo";
|
||||||
|
|
||||||
#
|
#
|
||||||
# can't set it below innodb_io_capacity
|
# Setting io_capacity_max lower than io_capacity affects also io_capacity
|
||||||
#
|
#
|
||||||
set global innodb_io_capacity_max=@start_innodb_capacity - 1;
|
set global innodb_io_capacity_max=1000;
|
||||||
select @@global.innodb_io_capacity_max;
|
set global innodb_io_capacity=500;
|
||||||
select * from information_schema.global_variables where variable_name='innodb_io_capacity_max';
|
set global innodb_io_capacity_max=400;
|
||||||
set global innodb_io_capacity_max=-7;
|
|
||||||
select @@global.innodb_io_capacity_max;
|
select @@global.innodb_io_capacity_max;
|
||||||
|
select @@global.innodb_io_capacity;
|
||||||
select * from information_schema.global_variables where variable_name='innodb_io_capacity_max';
|
select * from information_schema.global_variables where variable_name='innodb_io_capacity_max';
|
||||||
|
select * from information_schema.global_variables where variable_name='innodb_io_capacity';
|
||||||
|
|
||||||
|
#
|
||||||
|
# Setting io_capacity higher than io_capacity_max affects also io_capacity_max
|
||||||
|
#
|
||||||
|
set global innodb_io_capacity_max=1000;
|
||||||
|
set global innodb_io_capacity=500;
|
||||||
|
set global innodb_io_capacity=1400;
|
||||||
|
select @@global.innodb_io_capacity_max;
|
||||||
|
select @@global.innodb_io_capacity;
|
||||||
|
select * from information_schema.global_variables where variable_name='innodb_io_capacity_max';
|
||||||
|
select * from information_schema.global_variables where variable_name='innodb_io_capacity';
|
||||||
#
|
#
|
||||||
# min/max values
|
# min/max values
|
||||||
#
|
#
|
||||||
|
@ -14235,14 +14235,17 @@ innodb_io_capacity_max_update(
|
|||||||
{
|
{
|
||||||
ulong in_val = *static_cast<const ulong*>(save);
|
ulong in_val = *static_cast<const ulong*>(save);
|
||||||
if (in_val < srv_io_capacity) {
|
if (in_val < srv_io_capacity) {
|
||||||
in_val = srv_io_capacity;
|
|
||||||
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||||
ER_WRONG_ARGUMENTS,
|
ER_WRONG_ARGUMENTS,
|
||||||
"innodb_io_capacity_max cannot be"
|
"Setting innodb_io_capacity_max %lu"
|
||||||
" set lower than innodb_io_capacity.");
|
" lower than innodb_io_capacity %lu.",
|
||||||
|
in_val, srv_io_capacity);
|
||||||
|
|
||||||
|
srv_io_capacity = in_val;
|
||||||
|
|
||||||
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||||
ER_WRONG_ARGUMENTS,
|
ER_WRONG_ARGUMENTS,
|
||||||
"Setting innodb_io_capacity_max to %lu",
|
"Setting innodb_io_capacity to %lu",
|
||||||
srv_io_capacity);
|
srv_io_capacity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -14265,15 +14268,19 @@ innodb_io_capacity_update(
|
|||||||
from check function */
|
from check function */
|
||||||
{
|
{
|
||||||
ulong in_val = *static_cast<const ulong*>(save);
|
ulong in_val = *static_cast<const ulong*>(save);
|
||||||
|
|
||||||
if (in_val > srv_max_io_capacity) {
|
if (in_val > srv_max_io_capacity) {
|
||||||
in_val = srv_max_io_capacity;
|
|
||||||
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||||
ER_WRONG_ARGUMENTS,
|
ER_WRONG_ARGUMENTS,
|
||||||
"innodb_io_capacity cannot be set"
|
"Setting innodb_io_capacity to %lu"
|
||||||
" higher than innodb_io_capacity_max.");
|
" higher than innodb_io_capacity_max %lu",
|
||||||
|
in_val, srv_max_io_capacity);
|
||||||
|
|
||||||
|
srv_max_io_capacity = in_val * 2;
|
||||||
|
|
||||||
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||||
ER_WRONG_ARGUMENTS,
|
ER_WRONG_ARGUMENTS,
|
||||||
"Setting innodb_io_capacity to %lu",
|
"Setting innodb_max_io_capacity to %lu",
|
||||||
srv_max_io_capacity);
|
srv_max_io_capacity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14966,14 +14966,17 @@ innodb_io_capacity_max_update(
|
|||||||
{
|
{
|
||||||
ulong in_val = *static_cast<const ulong*>(save);
|
ulong in_val = *static_cast<const ulong*>(save);
|
||||||
if (in_val < srv_io_capacity) {
|
if (in_val < srv_io_capacity) {
|
||||||
in_val = srv_io_capacity;
|
|
||||||
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||||
ER_WRONG_ARGUMENTS,
|
ER_WRONG_ARGUMENTS,
|
||||||
"innodb_io_capacity_max cannot be"
|
"Setting innodb_io_capacity_max %lu"
|
||||||
" set lower than innodb_io_capacity.");
|
" lower than innodb_io_capacity %lu.",
|
||||||
|
in_val, srv_io_capacity);
|
||||||
|
|
||||||
|
srv_io_capacity = in_val;
|
||||||
|
|
||||||
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||||
ER_WRONG_ARGUMENTS,
|
ER_WRONG_ARGUMENTS,
|
||||||
"Setting innodb_io_capacity_max to %lu",
|
"Setting innodb_io_capacity to %lu",
|
||||||
srv_io_capacity);
|
srv_io_capacity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -14997,14 +15000,18 @@ innodb_io_capacity_update(
|
|||||||
{
|
{
|
||||||
ulong in_val = *static_cast<const ulong*>(save);
|
ulong in_val = *static_cast<const ulong*>(save);
|
||||||
if (in_val > srv_max_io_capacity) {
|
if (in_val > srv_max_io_capacity) {
|
||||||
in_val = srv_max_io_capacity;
|
|
||||||
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||||
ER_WRONG_ARGUMENTS,
|
ER_WRONG_ARGUMENTS,
|
||||||
"innodb_io_capacity cannot be set"
|
"Setting innodb_io_capacity to %lu"
|
||||||
" higher than innodb_io_capacity_max.");
|
" higher than innodb_io_capacity_max %lu",
|
||||||
|
in_val, srv_max_io_capacity);
|
||||||
|
|
||||||
|
srv_max_io_capacity = in_val * 2;
|
||||||
|
|
||||||
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||||
ER_WRONG_ARGUMENTS,
|
ER_WRONG_ARGUMENTS,
|
||||||
"Setting innodb_io_capacity to %lu",
|
"Setting innodb_max_io_capacity to %lu",
|
||||||
srv_max_io_capacity);
|
srv_max_io_capacity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user