Bumped to version 0.8.5

Fixed copy/paste bug with OK/!!/-- output (Thanks to Nils!)
Fixed a data length calculation bug in MySQL 4.0.x
Fixed a key buffer calculation bug in MySQL 4.0.x
Added in a notification for situations when no recommendations are available
Added Nils Breunese to the contributors list
This commit is contained in:
Major Hayden 2008-02-11 17:53:26 +00:00
parent 5e8c2311fa
commit 2f2235fabc

View file

@ -1,5 +1,5 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
# mysqltuner.pl - Version 0.8.0 # mysqltuner.pl - Version 0.8.5
# High Performance MySQL Tuning Script # High Performance MySQL Tuning Script
# Copyright (C) 2006-2008 Major Hayden - major@mhtx.net # Copyright (C) 2006-2008 Major Hayden - major@mhtx.net
# #
@ -25,6 +25,7 @@
# Dave Burgess # Dave Burgess
# Jonathan Hinds # Jonathan Hinds
# Mike Jackson # Mike Jackson
# Nils Breunese
# #
# Inspired by Matthew Montgomery's tuning-primer.sh script: # Inspired by Matthew Montgomery's tuning-primer.sh script:
# http://forge.mysql.com/projects/view.php?id=44 # http://forge.mysql.com/projects/view.php?id=44
@ -35,6 +36,7 @@ use diagnostics;
use Getopt::Long; use Getopt::Long;
# Set up a few variables for use in the script # Set up a few variables for use in the script
my $tunerversion = "0.8.5";
my (@adjvars, @generalrec); my (@adjvars, @generalrec);
# Set defaults # Set defaults
@ -59,7 +61,7 @@ if (defined $opt{'help'} && $opt{'help'} == 1) { usage(); }
sub usage { sub usage {
# Shown with --help option passed # Shown with --help option passed
print "\n". print "\n".
" MySQL High Performance Tuning Script\n". " MySQLTuner $tunerversion - MySQL High Performance Tuning Script\n".
" Bug reports, feature requests, and downloads at http://mysqltuner.com/\n". " Bug reports, feature requests, and downloads at http://mysqltuner.com/\n".
" Maintained by Major Hayden (major\@mhtx.net)\n\n". " Maintained by Major Hayden (major\@mhtx.net)\n\n".
" Important Usage Guidelines:\n". " Important Usage Guidelines:\n".
@ -77,8 +79,8 @@ sub usage {
# Setting up the colors for the print styles # Setting up the colors for the print styles
my $good = ($opt{nocolor} == 0)? "[\e[00;32mOK\e[00m]" : "[OK]" ; my $good = ($opt{nocolor} == 0)? "[\e[00;32mOK\e[00m]" : "[OK]" ;
my $bad = ($opt{nocolor} == 0)? "[\e[00;31mOK\e[00m]" : "[!!]" ; my $bad = ($opt{nocolor} == 0)? "[\e[00;31m!!\e[00m]" : "[!!]" ;
my $info = ($opt{nocolor} == 0)? "[\e[00;34mOK\e[00m]" : "[--]" ; my $info = ($opt{nocolor} == 0)? "[\e[00;34m--\e[00m]" : "[--]" ;
# Functions that handle the print styles # Functions that handle the print styles
sub goodprint { print $good." ".$_[0] unless ($opt{nogood} == 1); } sub goodprint { print $good." ".$_[0] unless ($opt{nogood} == 1); }
@ -289,11 +291,11 @@ sub check_storage_engines {
my @dblist = `mysql $mysqllogin -Bse "SHOW DATABASES"`; my @dblist = `mysql $mysqllogin -Bse "SHOW DATABASES"`;
foreach my $db (@dblist) { foreach my $db (@dblist) {
chomp($db); chomp($db);
if ($mysqlvermajor == 3) { if ($mysqlvermajor == 3 || ($mysqlvermajor == 4 && $mysqlverminor == 0)) {
# MySQL 3.23 keeps Data_Length in the 6th column # MySQL 3.23/4.0 keeps Data_Length in the 6th column
push (@tblist,`mysql $mysqllogin -Bse "SHOW TABLE STATUS FROM \\\`$db\\\`" | awk '{print \$2,\$6}'`); push (@tblist,`mysql $mysqllogin -Bse "SHOW TABLE STATUS FROM \\\`$db\\\`" | awk '{print \$2,\$6}'`);
} else { } else {
# MySQL 4.0+ keeps Data_Length in the 7th column # MySQL 4.1+ keeps Data_Length in the 7th column
push (@tblist,`mysql $mysqllogin -Bse "SHOW TABLE STATUS FROM \\\`$db\\\`" | awk '{print \$2,\$7}'`); push (@tblist,`mysql $mysqllogin -Bse "SHOW TABLE STATUS FROM \\\`$db\\\`" | awk '{print \$2,\$7}'`);
} }
} }
@ -365,7 +367,7 @@ sub calculations {
$mycalc{'pct_connections_used'} = ($mycalc{'pct_connections_used'} > 100) ? 100 : $mycalc{'pct_connections_used'} ; $mycalc{'pct_connections_used'} = ($mycalc{'pct_connections_used'} > 100) ? 100 : $mycalc{'pct_connections_used'} ;
# Key buffers # Key buffers
if ($mysqlvermajor > 3) { if ($mysqlvermajor > 3 && !($mysqlvermajor == 4 && $mysqlverminor == 0)) {
$mycalc{'pct_key_buffer_used'} = sprintf("%.1f",(1 - (($mystat{'Key_blocks_unused'} * $myvar{'key_cache_block_size'}) / $myvar{'key_buffer_size'})) * 100); $mycalc{'pct_key_buffer_used'} = sprintf("%.1f",(1 - (($mystat{'Key_blocks_unused'} * $myvar{'key_cache_block_size'}) / $myvar{'key_buffer_size'})) * 100);
} }
if ($mystat{'Key_read_requests'} > 0) { if ($mystat{'Key_read_requests'} > 0) {
@ -672,12 +674,15 @@ sub make_recommendations {
} }
foreach (@adjvars) { print " ".$_."\n"; } foreach (@adjvars) { print " ".$_."\n"; }
} }
if (@generalrec == 0 && @adjvars ==0) {
print "No additional performance recommendations are available.\n"
}
} }
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# BEGIN 'MAIN' # BEGIN 'MAIN'
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
print " >> MySQL High-Performance Tuning Script - Major Hayden <major\@mhtx.net>\n". print " >> MySQLTuner $tunerversion - Major Hayden <major\@mhtx.net>\n".
" >> Bug reports, feature requests, and downloads at http://mysqltuner.com/\n". " >> Bug reports, feature requests, and downloads at http://mysqltuner.com/\n".
" >> Run with '--help' for additional options and output filtering\n"; " >> Run with '--help' for additional options and output filtering\n";
os_setup; # Set up some OS variables os_setup; # Set up some OS variables