Name;MySQL;Percona;MariaDB
Variable;table_definition_cache;table_definition_cache;table_definition_cache
Configuration;Supported;Supported;Supported
Scope;Global;Global;Global
Dynamic;Yes;Yes;Yes
Data Type; Integer;Integer;Numeric
Default Value;-1 (signifies autosizing, do not assign this literal value);-1;400
Minimum Value;400;400;400
Maximum Value;524288;524288;2097152 (>= MariaDB 10.4.2), 524288 (<= MariaDB 10.4.1)
The table_definition_cache variable specifies the maximum number of table definitions that can be stored in the definition cache. The definition cache stores the definitions of tables that have been accessed recently so that the definitions can be retrieved quickly when the table is reaccessed.
table_definition_cache Usage
When a client establishes a connection to a MySQL server, the server maintains a cache of table definitions in memory so that it can quickly look up metadata about tables that are used in queries. The table_definition_cache variable controls the size of this cache. If a client issues a query that references a table for which the metadata is not in the cache, the server will retrieve the metadata from the data dictionary and add it to the cache.
table_definition_cache Configuration
The table_definition_cache system variable can be configured using the command line: Command Line: mysqld> set global table_definition_cache = XX
Replace XX with a value to suit your database needs. This change will only be applied to new connections. Make a new connection to the server, and the values will update. SET GLOBAL will not persist through a server restart.
table_definition_cache Considerations
The table_definition_cache variable is useful for optimizing MySQL performance. If you have a large number of tables in your database, increasing the value of table_definition_cache may improve the speed of queries that reference those tables because the server will not have to retrieve the metadata from the data dictionary as often. However, increasing the value of table_definition_cache also consumes more memory, so it is important to find the right balance based on the needs of your application.
A good value for the table_definition_cache variable would depend on the size of your database and the number of tables that are frequently accessed. As a general rule, it is recommended to set this value to at least the number of tables in your database, but it may need to be higher if you have a large number of tables or if you have a high volume of concurrent queries accessing different tables.
Ultimately, the best value for this variable will depend on your specific database and workload. It is recommended to monitor the table_definition_cache hit rate and adjust the value accordingly to optimize performance.
Releem Agent can collect metrics and other system information for Releem Cloud Platform. Releem then recommends a new and improved server configuration. Releem can automatically apply these settings, including any recommendations for table_definition_cache.
Ready to optimize your MySQL performance? Try Releem today for FREE! No credit card required.