Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding experimental option avoiding runtime errors #762

Merged
merged 3 commits into from
Feb 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion USAGE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# NAME

MySQLTuner 2.5.2 - MySQL High Performance Tuning Script
MySQLTuner 2.5.3 - MySQL High Performance Tuning Script

# IMPORTANT USAGE GUIDELINES

Expand Down
48 changes: 29 additions & 19 deletions mysqltuner.pl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/usr/bin/perl
# mysqltuner.pl - Version 2.5.2
#!env perl

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removing the full path breaks the shebang when using bash

$ ./mysqltuner.pl --help
-bash: ./mysqltuner.pl: env: bad interpreter: No such file or directory

$ bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

$ which env
/usr/bin/env

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do we make such change?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

# mysqltuner.pl - Version 2.5.3
# High Performance MySQL Tuning Script
# Copyright (C) 2015-2023 Jean-Marie Renouard - jmrenouard@gmail.com
# Copyright (C) 2006-2023 Major Hayden - major@mhtx.net
Expand Down Expand Up @@ -57,7 +57,7 @@ package main;
#use Env;

# Set up a few variables for use in the script
my $tunerversion = "2.5.2";
my $tunerversion = "2.5.3";
my ( @adjvars, @generalrec );

# Set defaults
Expand Down Expand Up @@ -109,6 +109,7 @@ package main;
"prettyjson" => 0,
"reportfile" => 0,
"verbose" => 0,
"experimental" => 0,
"defaults-file" => '',
"defaults-extra-file" => '',
"protocol" => '',
Expand Down Expand Up @@ -151,7 +152,7 @@ package main;
'server-log=s', 'protocol=s',
'defaults-extra-file=s', 'dumpdir=s',
'feature=s', 'dbgpattern=s',
'defaultarch=i'
'defaultarch=i', 'experimental'
)
or pod2usage(
-exitval => 1,
Expand Down Expand Up @@ -209,6 +210,11 @@ package main;

$opt{dbgpattern} = '.*' if ( $opt{dbgpattern} eq '' );

# Activate debug variables
#if ( $opt{debug} ne '' ) { $opt{debug} = 2; }
# Activate experimental calculations and analysis
#if ( $opt{experimental} ne '' ) { $opt{experimental} = 1; }

# check if we need to enable verbose mode
if ( $opt{feature} ne '' ) { $opt{verbose} = 1; }
if ( $opt{verbose} ) {
Expand Down Expand Up @@ -2530,7 +2536,7 @@ sub check_architecture {
}
elsif ( `uname` =~ /Darwin/ && `uname -m` =~ /x86_64/ ) {

# Darwin gibas.local 12.5.2 Darwin Kernel Version 12.3.0: Sun Jan 6 22:37:10 PST 2013; root:xnu-2050.22.13~1/RELEASE_X86_64 x86_64
# Darwin gibas.local 12.5.3 Darwin Kernel Version 12.3.0: Sun Jan 6 22:37:10 PST 2013; root:xnu-2050.22.13~1/RELEASE_X86_64 x86_64
$arch = 64;
goodprint "Operating on 64-bit architecture";
}
Expand Down Expand Up @@ -3219,8 +3225,8 @@ sub calculations {
"select round( 100* sum(allocated)/( select VARIABLE_VALUE "
. "FROM performance_schema.global_variables "
. "WHERE VARIABLE_NAME='innodb_buffer_pool_size' ) ,2)"
. 'FROM sys.x\$innodb_buffer_stats_by_table;' );

. 'FROM sys.x\$innodb_buffer_stats_by_table;' )
if ($opt{experimental});
# Binlog Cache
if ( $myvar{'log_bin'} ne 'OFF' ) {
$mycalc{'pct_binlog_cache'} = percentage(
Expand Down Expand Up @@ -6372,14 +6378,16 @@ sub mysql_innodb {
# ,2) as "PCT ALLOC/BUFFER POOL"
#from sys.x$innodb_buffer_stats_by_table;

if (defined $mycalc{innodb_buffer_alloc_pct}) {
if ( $mycalc{innodb_buffer_alloc_pct} < 80 ) {
badprint "Ratio Buffer Pool allocated / Buffer Pool Size: "
. $mycalc{'innodb_buffer_alloc_pct'} . '%';
}
else {
goodprint "Ratio Buffer Pool allocated / Buffer Pool Size: "
. $mycalc{'innodb_buffer_alloc_pct'} . '%';
if ( $opt{experimental} ) {
if (defined $mycalc{innodb_buffer_alloc_pct}) {
if ( $mycalc{innodb_buffer_alloc_pct} < 80 ) {
badprint "Ratio Buffer Pool allocated / Buffer Pool Size: "
. $mycalc{'innodb_buffer_alloc_pct'} . '%';
}
else {
goodprint "Ratio Buffer Pool allocated / Buffer Pool Size: "
. $mycalc{'innodb_buffer_alloc_pct'} . '%';
}
}
}
if ( $mycalc{'innodb_log_size_pct'} < 20
Expand Down Expand Up @@ -6408,7 +6416,7 @@ sub mysql_innodb {
. $myvar{'innodb_log_files_in_group'} . " / "
. hr_bytes( $myvar{'innodb_buffer_pool_size'} )
. " should be equal to 25%";
push(
push(
@adjvars,
"innodb_log_file_size should be (="
. hr_bytes_rnd(
Expand Down Expand Up @@ -7201,6 +7209,8 @@ sub headerprint {
. "\t * Major Hayden <major\@mhtx.net>\n"
. " >> Bug reports, feature requests, and downloads at http://mysqltuner.pl/\n"
. " >> Run with '--help' for additional options and output filtering";
debugprint("Debug: ".$opt{debug});
debugprint("Experimental: ".$opt{experimental});
}

sub string2file {
Expand All @@ -7211,12 +7221,12 @@ sub string2file {
"Unable to open $filename in write mode. Please check permissions for this file or directory";
print $fh $content if defined($content);
close $fh;
debugprint $content if ( $opt{'debug'} );
debugprint $content;
}

sub file2array {
my $filename = shift;
debugprint "* reading $filename" if ( $opt{'debug'} );
debugprint "* reading $filename";
my $fh;
open( $fh, q(<), "$filename" )
or die "Couldn't open $filename for reading: $!\n";
Expand Down Expand Up @@ -7402,7 +7412,7 @@ sub which {

=head1 NAME

MySQLTuner 2.5.2 - MySQL High Performance Tuning Script
MySQLTuner 2.5.3 - MySQL High Performance Tuning Script

=head1 IMPORTANT USAGE GUIDELINES

Expand Down