Tuning table_definition_cache

Basic Details

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.

Releem automatically tunes table_definition_cache and 44 other variables to improve MySQL performance. Try Releem for Free, or deepen your understanding by reading our detailed article.

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.
Releem automatically detects MySQL performance degradation and optimizes MySQL configuration files