Quick mod to add Aria storage engine support

This commit is contained in:
zinga 2014-01-22 20:30:45 +10:00
parent 71f14ea053
commit d530b295b1

View file

@ -499,6 +499,7 @@ sub check_storage_engines {
$engines .= (defined $myvar{'have_federated_engine'} && $myvar{'have_federated_engine'} eq "YES")? greenwrap "+Federated " : redwrap "-Federated " ;
$engines .= (defined $myvar{'have_innodb'} && $myvar{'have_innodb'} eq "YES")? greenwrap "+InnoDB " : redwrap "-InnoDB " ;
$engines .= (defined $myvar{'have_isam'} && $myvar{'have_isam'} eq "YES")? greenwrap "+ISAM " : redwrap "-ISAM " ;
$engines .= (defined $myvar{'have_aria'} && $myvar{'have_aria'} eq "YES")? greenwrap "+Aria " : redwrap "-Aria " ;
$engines .= (defined $myvar{'have_ndbcluster'} && $myvar{'have_ndbcluster'} eq "YES")? greenwrap "+NDBCluster " : redwrap "-NDBCluster " ;
print "$engines\n";
if (mysql_version_ge(5)) {
@ -591,6 +592,7 @@ sub calculations {
$mycalc{'server_buffers'} += (defined $myvar{'innodb_additional_mem_pool_size'}) ? $myvar{'innodb_additional_mem_pool_size'} : 0 ;
$mycalc{'server_buffers'} += (defined $myvar{'innodb_log_buffer_size'}) ? $myvar{'innodb_log_buffer_size'} : 0 ;
$mycalc{'server_buffers'} += (defined $myvar{'query_cache_size'}) ? $myvar{'query_cache_size'} : 0 ;
$mycalc{'server_buffers'} += (defined $myvar{'aria_pagecache_buffer_size'}) ? $myvar{'aria_pagecache_buffer_size'} : 0 ;
# Global memory
$mycalc{'max_used_memory'} = $mycalc{'server_buffers'} + $mycalc{"max_total_per_thread_buffers"};
@ -613,18 +615,30 @@ sub calculations {
} else {
$mycalc{'pct_keys_from_mem'} = 0;
}
if (defined $mystat{'Aria_pagecache_read_requests'} && $mystat{'Aria_pagecache_read_requests'} > 0) {
$mycalc{'pct_aria_keys_from_mem'} = sprintf("%.1f",(100 - (($mystat{'Aria_pagecache_reads'} / $mystat{'Aria_pagecache_read_requests'}) * 100)));
} else {
$mycalc{'pct_aria_keys_from_mem'} = 0;
}
if ($doremote eq 0 and !mysql_version_ge(5)) {
my $size = 0;
$size += (split)[0] for `find $myvar{'datadir'} -name "*.MYI" 2>&1 | xargs du -L $duflags 2>&1`;
$mycalc{'total_myisam_indexes'} = $size;
$mycalc{'total_aria_indexes'} = 0;
} elsif (mysql_version_ge(5)) {
$mycalc{'total_myisam_indexes'} = `mysql $mysqllogin -Bse "SELECT IFNULL(SUM(INDEX_LENGTH),0) FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN ('information_schema') AND ENGINE = 'MyISAM';"`;
$mycalc{'total_aria_indexes'} = `mysql $mysqllogin -Bse "SELECT IFNULL(SUM(INDEX_LENGTH),0) FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN ('information_schema') AND ENGINE = 'Aria';"`;
}
if (defined $mycalc{'total_myisam_indexes'} and $mycalc{'total_myisam_indexes'} == 0) {
$mycalc{'total_myisam_indexes'} = "fail";
} elsif (defined $mycalc{'total_myisam_indexes'}) {
chomp($mycalc{'total_myisam_indexes'});
}
if (defined $mycalc{'total_aria_indexes'} and $mycalc{'total_aria_indexes'} == 0) {
$mycalc{'total_aria_indexes'} = "fail";
} elsif (defined $mycalc{'total_aria_indexes'}) {
chomp($mycalc{'total_aria_indexes'});
}
# Query cache
if (mysql_version_ge(4)) {
@ -773,6 +787,33 @@ sub mysql_stats {
}
}
# Aria pagecache
if (defined $myvar{'have_aria'} && $myvar{'have_aria'} eq "YES" && defined $enginestats{'Aria'}) {
if (!defined($mycalc{'total_aria_indexes'}) and $doremote == 1) {
push(@generalrec,"Unable to calculate Aria indexes on remote MySQL server < 5.0.0");
} elsif ($mycalc{'total_aria_indexes'} =~ /^fail$/) {
badprint "Cannot calculate Aria index size - re-run script as root user\n";
} elsif ($mycalc{'total_aria_indexes'} == "0") {
badprint "None of your Aria tables are indexed - add indexes immediately\n";
} else {
if ($myvar{'aria_pagecache_buffer_size'} < $mycalc{'total_aria_indexes'} && $mycalc{'pct_aria_keys_from_mem'} < 95) {
badprint "Aria pagecache size / total Aria indexes: ".hr_bytes($myvar{'aria_pagecache_buffer_size'})."/".hr_bytes($mycalc{'total_aria_indexes'})."\n";
push(@adjvars,"aria_pagecache_buffer_size (> ".hr_bytes($mycalc{'total_aria_indexes'}).")");
} else {
goodprint "Aria pagecache size / total Aria indexes: ".hr_bytes($myvar{'aria_pagecache_buffer_size'})."/".hr_bytes($mycalc{'total_aria_indexes'})."\n";
}
if ($mystat{'Aria_pagecache_read_requests'} > 0) {
if ($mycalc{'pct_aria_keys_from_mem'} < 95) {
badprint "Aria pagecache hit rate: $mycalc{'pct_aria_keys_from_mem'}% (".hr_num($mystat{'Aria_pagecache_read_requests'})." cached / ".hr_num($mystat{'Aria_pagecache_reads'})." reads)\n";
} else {
goodprint "Aria pagecache hit rate: $mycalc{'pct_aria_keys_from_mem'}% (".hr_num($mystat{'Aria_pagecache_read_requests'})." cached / ".hr_num($mystat{'Aria_pagecache_reads'})." reads)\n";
}
} else {
# No queries have run that would use keys
}
}
}
# Query cache
if (!mysql_version_ge(4)) {
# MySQL versions < 4.01 don't support query caching