public function DatabaseFragmentation::calculateScore in Site Audit 8.3
.
Overrides SiteAuditCheckBase::calculateScore
File
- src/
Plugin/ SiteAuditCheck/ DatabaseFragmentation.php, line 70
Class
- DatabaseFragmentation
- Provides the CronLast Check.
Namespace
Drupal\site_audit\Plugin\SiteAuditCheckCode
public function calculateScore() {
$connection = Database::getConnection();
$query = \Drupal::database()
->select('information_schema.TABLES', 'ist');
$query
->fields('ist', [
'TABLE_NAME',
]);
$query
->addExpression('ROUND(DATA_LENGTH / 1024 / 1024)', 'data_length');
$query
->addExpression('ROUND(INDEX_LENGTH / 1024 / 1024)', 'index_length');
$query
->addExpression('ROUND(DATA_FREE / 1024 / 1024)', 'data_free');
$query
->condition('ist.DATA_FREE', 0, '>');
$query
->condition('ist.table_schema', $connection
->getConnectionOptions()['database']);
$result = $query
->execute();
while ($row = $result
->fetchAssoc()) {
$data = $row['data_length'] + $row['index_length'];
if ($data != 0) {
$free = $row['data_free'];
$fragmentation_ratio = $free / $data;
if ($fragmentation_ratio > 0.05) {
$this->registry->database_fragmentation[$row['TABLE_NAME']] = $fragmentation_ratio;
}
}
}
if (empty($this->registry->database_fragmentation)) {
return SiteAuditCheckBase::AUDIT_CHECK_SCORE_PASS;
}
return SiteAuditCheckBase::AUDIT_CHECK_SCORE_WARN;
}