Skip to content

Commit 8698074

Browse files
authored
Merge pull request #832 from JaxxOlly/JaxxOlly-mariadb-division-errors
Update mysqltuner.pl - Illegal division by zero at mysqltuner.pl lin…
2 parents 83789de + d04ba6a commit 8698074

File tree

1 file changed

+33
-30
lines changed

1 file changed

+33
-30
lines changed

mysqltuner.pl

Lines changed: 33 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6557,37 +6557,40 @@ sub mysql_innodb {
65576557
}
65586558

65596559
# InnoDB Used Buffer Pool Size vs CHUNK size
6560-
if ( !defined( $myvar{'innodb_buffer_pool_chunk_size'} ) ) {
6561-
infoprint
6562-
"InnoDB Buffer Pool Chunk Size not used or defined in your version";
6563-
}
6564-
else {
6565-
infoprint "Number of InnoDB Buffer Pool Chunk: "
6566-
. int( $myvar{'innodb_buffer_pool_size'} ) /
6567-
int( $myvar{'innodb_buffer_pool_chunk_size'} ) . " for "
6568-
. $myvar{'innodb_buffer_pool_instances'}
6569-
. " Buffer Pool Instance(s)";
6570-
6571-
if (
6572-
int( $myvar{'innodb_buffer_pool_size'} ) % (
6573-
int( $myvar{'innodb_buffer_pool_chunk_size'} ) *
6574-
int( $myvar{'innodb_buffer_pool_instances'} )
6575-
) eq 0
6576-
)
6577-
{
6578-
goodprint
6579-
"Innodb_buffer_pool_size aligned with Innodb_buffer_pool_chunk_size & Innodb_buffer_pool_instances";
6580-
}
6581-
else {
6582-
badprint
6583-
"Innodb_buffer_pool_size aligned with Innodb_buffer_pool_chunk_size & Innodb_buffer_pool_instances";
6584-
6585-
#push( @adjvars, "Adjust innodb_buffer_pool_instances, innodb_buffer_pool_chunk_size with innodb_buffer_pool_size" );
6586-
push( @adjvars,
6587-
"innodb_buffer_pool_size must always be equal to or a multiple of innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances"
6588-
);
6589-
}
6560+
if ( !defined($myvar{'innodb_buffer_pool_chunk_size'}) ||
6561+
$myvar{'innodb_buffer_pool_chunk_size'} == 0 ||
6562+
!defined($myvar{'innodb_buffer_pool_size'}) ||
6563+
$myvar{'innodb_buffer_pool_size'} == 0 ||
6564+
!defined($myvar{'innodb_buffer_pool_instances'}) ||
6565+
$myvar{'innodb_buffer_pool_instances'} == 0 ) {
6566+
6567+
badprint "Cannot calculate InnoDB Buffer Pool Chunk breakdown due to missing or zero values:";
6568+
6569+
infoprint " - innodb_buffer_pool_size: " .
6570+
(defined $myvar{'innodb_buffer_pool_size'} ? $myvar{'innodb_buffer_pool_size'} : "undefined");
6571+
infoprint " - innodb_buffer_pool_chunk_size: " .
6572+
(defined $myvar{'innodb_buffer_pool_chunk_size'} ? $myvar{'innodb_buffer_pool_chunk_size'} : "undefined");
6573+
infoprint " - innodb_buffer_pool_instances: " .
6574+
(defined $myvar{'innodb_buffer_pool_instances'} ? $myvar{'innodb_buffer_pool_instances'} : "undefined");
6575+
6576+
} else {
6577+
my $num_chunks = int($myvar{'innodb_buffer_pool_size'} / $myvar{'innodb_buffer_pool_chunk_size'});
6578+
infoprint "Number of InnoDB Buffer Pool Chunk: $num_chunks for "
6579+
. $myvar{'innodb_buffer_pool_instances'} . " Buffer Pool Instance(s)";
6580+
6581+
my $expected_size = int($myvar{'innodb_buffer_pool_chunk_size'}) *
6582+
int($myvar{'innodb_buffer_pool_instances'});
6583+
6584+
if (int($myvar{'innodb_buffer_pool_size'}) % $expected_size == 0) {
6585+
goodprint "Innodb_buffer_pool_size aligned with Innodb_buffer_pool_chunk_size & Innodb_buffer_pool_instances";
6586+
} else {
6587+
badprint "Innodb_buffer_pool_size not aligned with Innodb_buffer_pool_chunk_size & Innodb_buffer_pool_instances";
6588+
6589+
push(@adjvars,
6590+
"innodb_buffer_pool_size must always be equal to or a multiple of innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances"
6591+
);
65906592
}
6593+
}
65916594

65926595
# InnoDB Read efficiency
65936596
if ( defined $mycalc{'pct_read_efficiency'}

0 commit comments

Comments
 (0)