1
0
mirror of https://github.com/MariaDB/server.git synced 2025-11-25 17:25:02 +03:00

MDEV-23379 Deprecate&ignore InnoDB concurrency throttling parameters

The parameters innodb_thread_concurrency and innodb_commit_concurrency
were useful years ago when both computing resources and the implementation
of some shared data structures were limited. MySQL 5.0 or 5.1 had trouble
scaling beyond 8 concurrent connections. Most of the scalability bottlenecks
have been removed since then, and the transactions per second delivered
by MariaDB Server 10.5 should not dramatically drop upon exceeding the
'optimal' number of connections.

Hence, enabling any concurrency throttling for InnoDB actually makes
things worse. We have seen many customers mistakenly setting this to a
small value like 16 or 64 and then complaining the server was slow.

Ignoring the parameters allows us to remove some normally unused code
and data structures, which could slightly improve performance.

innodb_thread_concurrency, innodb_commit_concurrency,
innodb_replication_delay, innodb_concurrency_tickets,
innodb_thread_sleep_delay, innodb_adaptive_max_sleep_delay:
Deprecate and ignore; hard-wire to 0.

The column INFORMATION_SCHEMA.INNODB_TRX.trx_concurrency_tickets
will always report 0.
This commit is contained in:
Marko Mäkelä
2020-08-04 06:59:29 +03:00
parent 7438fc4f73
commit bbd70fcc43
39 changed files with 345 additions and 1170 deletions

View File

@@ -1,93 +1,103 @@
SET @global_start_value = @@global.innodb_concurrency_tickets;
SELECT @global_start_value;
@global_start_value
5000
0
'#--------------------FN_DYNVARS_046_01------------------------#'
SET @@global.innodb_concurrency_tickets = 0;
Warnings:
Warning 1292 Truncated incorrect innodb_concurrency_tickets value: '0'
Warning 138 The parameter innodb_concurrency_tickets is deprecated and has no effect.
SET @@global.innodb_concurrency_tickets = DEFAULT;
Warnings:
Warning 138 The parameter innodb_concurrency_tickets is deprecated and has no effect.
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
5000
0
'#---------------------FN_DYNVARS_046_02-------------------------#'
SET innodb_concurrency_tickets = 1;
ERROR HY000: Variable 'innodb_concurrency_tickets' is a GLOBAL variable and should be set with SET GLOBAL
SELECT @@innodb_concurrency_tickets;
@@innodb_concurrency_tickets
5000
0
SELECT local.innodb_concurrency_tickets;
ERROR 42S02: Unknown table 'local' in field list
SET global innodb_concurrency_tickets = 0;
Warnings:
Warning 1292 Truncated incorrect innodb_concurrency_tickets value: '0'
Warning 138 The parameter innodb_concurrency_tickets is deprecated and has no effect.
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
1
0
'#--------------------FN_DYNVARS_046_03------------------------#'
SET @@global.innodb_concurrency_tickets = 1;
Warnings:
Warning 138 The parameter innodb_concurrency_tickets is deprecated and has no effect.
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
1
0
SET @@global.innodb_concurrency_tickets = 1000;
Warnings:
Warning 138 The parameter innodb_concurrency_tickets is deprecated and has no effect.
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
1000
0
SET @@global.innodb_concurrency_tickets = 4294967295;
Warnings:
Warning 138 The parameter innodb_concurrency_tickets is deprecated and has no effect.
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
4294967295
0
'#--------------------FN_DYNVARS_046_04-------------------------#'
SET @@global.innodb_concurrency_tickets = 4294967296;
SELECT @@global.innodb_concurrency_tickets IN (4294967296,4294967295);
@@global.innodb_concurrency_tickets IN (4294967296,4294967295)
1
0
SET @@global.innodb_concurrency_tickets = 12345678901;
SELECT @@global.innodb_concurrency_tickets IN (12345678901,4294967295);
@@global.innodb_concurrency_tickets IN (12345678901,4294967295)
1
0
SET @@global.innodb_concurrency_tickets = 18446744073709551615;
SELECT @@global.innodb_concurrency_tickets IN (18446744073709551615,4294967295);
@@global.innodb_concurrency_tickets IN (18446744073709551615,4294967295)
1
0
'#--------------------FN_DYNVARS_046_05-------------------------#'
SET @@global.innodb_concurrency_tickets = -1;
Warnings:
Warning 1292 Truncated incorrect innodb_concurrency_tickets value: '-1'
Warning 138 The parameter innodb_concurrency_tickets is deprecated and has no effect.
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
1
0
SET @@global.innodb_concurrency_tickets = -1024;
Warnings:
Warning 1292 Truncated incorrect innodb_concurrency_tickets value: '-1024'
Warning 138 The parameter innodb_concurrency_tickets is deprecated and has no effect.
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
1
0
SET @@global.innodb_concurrency_tickets = "T";
ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets'
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
1
0
SET @@global.innodb_concurrency_tickets = "Y";
ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets'
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
1
0
SET @@global.innodb_concurrency_tickets = 1.1;
ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets'
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
1
0
SET @@global.innodb_concurrency_tickets = " ";
ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets'
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
1
0
SET @@global.innodb_concurrency_tickets = ' ';
ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets'
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
1
0
'#----------------------FN_DYNVARS_046_06------------------------#'
SELECT @@global.innodb_concurrency_tickets =
VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
@@ -97,34 +107,38 @@ VARIABLE_VALUE
1
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
1
0
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='innodb_concurrency_tickets';
VARIABLE_VALUE
1
0
'#---------------------FN_DYNVARS_046_07-------------------------#'
SET @@global.innodb_concurrency_tickets = OFF;
ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets'
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
1
0
SET @@global.innodb_concurrency_tickets = ON;
ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets'
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
1
0
'#---------------------FN_DYNVARS_046_08----------------------#'
SET @@global.innodb_concurrency_tickets = TRUE;
Warnings:
Warning 138 The parameter innodb_concurrency_tickets is deprecated and has no effect.
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
1
0
SET @@global.innodb_concurrency_tickets = FALSE;
Warnings:
Warning 1292 Truncated incorrect innodb_concurrency_tickets value: '0'
Warning 138 The parameter innodb_concurrency_tickets is deprecated and has no effect.
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
1
0
SET @@global.innodb_concurrency_tickets = @global_start_value;
Warnings:
Warning 138 The parameter innodb_concurrency_tickets is deprecated and has no effect.
SELECT @@global.innodb_concurrency_tickets;
@@global.innodb_concurrency_tickets
5000
0