Merge pull request #2426 from annando/1604-cron-optimize
Don't optimize the tables when the maximum size is lower than zero
This commit is contained in:
commit
d4fd01e25e
|
@ -335,35 +335,37 @@ function cron_clear_cache(&$a) {
|
||||||
if ($max_tablesize == 0)
|
if ($max_tablesize == 0)
|
||||||
$max_tablesize = 100 * 1000000; // Default are 100 MB
|
$max_tablesize = 100 * 1000000; // Default are 100 MB
|
||||||
|
|
||||||
// Minimum fragmentation level in percent
|
if ($max_tablesize > 0) {
|
||||||
$fragmentation_level = intval(get_config('system','optimize_fragmentation')) / 100;
|
// Minimum fragmentation level in percent
|
||||||
if ($fragmentation_level == 0)
|
$fragmentation_level = intval(get_config('system','optimize_fragmentation')) / 100;
|
||||||
$fragmentation_level = 0.3; // Default value is 30%
|
if ($fragmentation_level == 0)
|
||||||
|
$fragmentation_level = 0.3; // Default value is 30%
|
||||||
|
|
||||||
// Optimize some tables that need to be optimized
|
// Optimize some tables that need to be optimized
|
||||||
$r = q("SHOW TABLE STATUS");
|
$r = q("SHOW TABLE STATUS");
|
||||||
foreach($r as $table) {
|
foreach($r as $table) {
|
||||||
|
|
||||||
// Don't optimize tables that are too large
|
// Don't optimize tables that are too large
|
||||||
if ($table["Data_length"] > $max_tablesize)
|
if ($table["Data_length"] > $max_tablesize)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Don't optimize empty tables
|
// Don't optimize empty tables
|
||||||
if ($table["Data_length"] == 0)
|
if ($table["Data_length"] == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Calculate fragmentation
|
// Calculate fragmentation
|
||||||
$fragmentation = $table["Data_free"] / ($table["Data_length"] + $table["Index_length"]);
|
$fragmentation = $table["Data_free"] / ($table["Data_length"] + $table["Index_length"]);
|
||||||
|
|
||||||
logger("Table ".$table["Name"]." - Fragmentation level: ".round($fragmentation * 100, 2), LOGGER_DEBUG);
|
logger("Table ".$table["Name"]." - Fragmentation level: ".round($fragmentation * 100, 2), LOGGER_DEBUG);
|
||||||
|
|
||||||
// Don't optimize tables that needn't to be optimized
|
// Don't optimize tables that needn't to be optimized
|
||||||
if ($fragmentation < $fragmentation_level)
|
if ($fragmentation < $fragmentation_level)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// So optimize it
|
// So optimize it
|
||||||
logger("Optimize Table ".$table["Name"], LOGGER_DEBUG);
|
logger("Optimize Table ".$table["Name"], LOGGER_DEBUG);
|
||||||
q("OPTIMIZE TABLE `%s`", dbesc($table["Name"]));
|
q("OPTIMIZE TABLE `%s`", dbesc($table["Name"]));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
set_config('system','cache_last_cleared', time());
|
set_config('system','cache_last_cleared', time());
|
||||||
|
|
Loading…
Reference in a new issue