From 143b80b3a6d6a13f7d0a5f271b4e59ffbf223b7e Mon Sep 17 00:00:00 2001 From: Jean-Marie Renouard Date: Thu, 3 Oct 2019 21:29:03 +0200 Subject: [PATCH] Add recommendation on table_definition_cache #433 --- INTERNALS.md | 1 + mysqltuner.pl | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/INTERNALS.md b/INTERNALS.md index aa6121f..9f2090b 100644 --- a/INTERNALS.md +++ b/INTERNALS.md @@ -167,6 +167,7 @@ * Thread cache (=4) * Thread cache hit ratio (>50%) if thread_handling is different of pools-of-threads * Table cache hit ratio(>2°%) +* Table cache definition should be upper that total number of tables or in autoresizing mode * Percentage of open file and open file limit(<85%) * Percentage of table locks (<95%) * Percentage of binlog cache lock (<90%) diff --git a/mysqltuner.pl b/mysqltuner.pl index 48ba9d9..13ea9a6 100755 --- a/mysqltuner.pl +++ b/mysqltuner.pl @@ -3238,6 +3238,23 @@ sub mysql_stats { } } + # Table definition cache + my $nbtables=select_one('SELECT COUNT(*) FROM information_schema.tables'); + if ( defined $myvar{'table_definition_cache'} ) { + if ( $myvar{'table_definition_cache'} == -1 ) { + infoprint ("table_definition_cache(".$myvar{'table_definition_cache'} .") is in autosizing mode"); + } elsif ($myvar{'table_definition_cache'} < $nbtables ) { + badprint "table_definition_cache(".$myvar{'table_definition_cache'} .") is lower than number of tables($nbtables) "; + push( @adjvars, + "table_definition_cache(".$myvar{'table_definition_cache'} .") > " . $$nbtables . " or -1 (autosizing if supported)" ); + } + else { + goodprint "table_definition_cache(".$myvar{'table_definition_cache'} .") is upper than number of tables($nbtables)"; + } + } else { + infoprint "No table_definition_cache variable found."; + } + # Open files if ( defined $mycalc{'pct_files_open'} ) { if ( $mycalc{'pct_files_open'} > 85 ) {