thread_cache_size
This page is part of MariaDB's Documentation.
The parent of this page is: System Variables for MariaDB Enterprise Server
Topics on this page:
Overview
Controls how many threads are cached for use by new client connections. Threads are freed after 5 minutes of idle time.
DETAILS
The thread_cache_size
system variable controls how many threads are cached for new client connections. Caching threads for new client connections can help improve performance in environments with high volumes of new connections.
Query Thread Cache Size
The number of threads in the cache can be queried by using the SHOW STATUS
statement to query the value of the Threads_cached
status variable:
SHOW GLOBAL STATUS
LIKE 'Threads_cached';
Compute Thread Cache Miss Rate
The thread cache miss rate can be computed using the Threads_created
and Connections
status variables:
The
Threads_created
status variable shows how many threads have been created since the server was brought onlineThe
Connections
status variable shows how many new connection attempts have been made since the server was brought online
If you divide Threads_created
by Connections
, that shows the thread cache miss rate:
SELECT threads_created, connections,
(threads_created / connections) AS thread_cache_miss_rate
FROM
(SELECT gs1.VARIABLE_VALUE AS threads_created
FROM information_schema.GLOBAL_STATUS gs1
WHERE gs1.VARIABLE_NAME LIKE 'Threads_created') tc
JOIN
(SELECT gs2.VARIABLE_VALUE AS connections
FROM information_schema.GLOBAL_STATUS gs2
WHERE gs2.VARIABLE_NAME LIKE 'Connections') c;
If the above query is executed at different times, the results can be interpreted in the following way:
If
thread_cache_miss_rate
stays constant or grows and approaches1
, the current thread cache size is not large enough to keep up with new connection requests.If
thread_cache_miss_rate
shrinks and approaches0
, the current thread cache size is either equal to or larger than needed to keep up with new connection requests. To determine whether it is larger than needed, theThreads_cached
status variable can also be monitored to determine whether the thread cache consistently contains too many cached threads.
Interactions with Thread Pool
When the thread pool is enabled by setting thread_handling=pool-of-threads
, the thread cache is unused, so the thread_cache_size
system variable has no effect.
Interactions with max_connections
If the thread_cache_size
system variable is set to a value greater than the value of the max_connections
system variable, the thread_cache_size
value will be set to the max_connections
value.
PARAMETERS
Command-line | --thread_cache_size=# |
Configuration file | Supported |
Dynamic | Yes |
Scope | Global |
Data Type | BIGINT UNSIGNED |
Minimum Value | 0 |
Maximum Value | 16384 |
Product Default Value | 256 |
SKYSQL
EXAMPLES
Show Value with SHOW VARIABLES
SHOW GLOBAL VARIABLES
can show the global value:
SHOW GLOBAL VARIABLES
LIKE 'thread_cache_size';
Since this system variable is only global scope, SHOW VARIABLES
and SHOW SESSION VARIABLES
also show the global value.
Query Value using @@global
and @@session
In SELECT
and other SQL statements, @@global
can be queried for the global value:
SELECT @@global.thread_cache_size;
Since this system variable is only global scope, @@session
can't be queried for this variable.
Information Schema
The information_schema.SYSTEM_VARIABLES
table can be queried to obtain details about the system variable:
SELECT *
FROM information_schema.SYSTEM_VARIABLES
WHERE VARIABLE_NAME LIKE 'thread_cache_size';
The information_schema.GLOBAL_VARIABLES
table can be queried to obtain the global value:
SELECT *
FROM information_schema.GLOBAL_VARIABLES
WHERE VARIABLE_NAME LIKE 'thread_cache_size';
This system variable is only global scope, so the information_schema.SESSION_VARIABLES
table can also be queried to obtain the global value:
SELECT *
FROM information_schema.SESSION_VARIABLES
WHERE VARIABLE_NAME LIKE 'thread_cache_size';