prepared_query('SHOW CREATE TABLE ' . $match[1]); list(,$definition) = $DB->next_record(MYSQLI_NUM, false); header('Content-type: text/plain'); die($definition); } } $SortOrderMap = [ 'datafree' => ['data_free', 'desc', 'free space'], 'datasize' => ['data_length', 'desc', 'table size'], 'freeratio' => ['CASE WHEN data_length = 0 THEN data_free / data_length END', 'desc', 'table bloat'], 'indexsize' => ['index_length', 'desc', 'index size'], 'name' => ['table_name', 'desc', 'name'], 'rows' => ['table_rows', 'desc', 'row counts'], 'rowsize' => ['avg_row_length', 'desc', 'mean row length'], 'totalsize' => ['data_length + index_length', 'desc', 'total table size'], ]; $SortOrder = (!empty($_GET['order']) && isset($SortOrderMap[$_GET['order']])) ? $_GET['order'] : 'totalsize'; $orderBy = $SortOrderMap[$SortOrder][0]; $orderWay = (empty($_GET['sort']) || $_GET['sort'] == $SortOrderMap[$SortOrder][1]) ? $SortOrderMap[$SortOrder][1] : SortableTableHeader::SORT_DIRS[$SortOrderMap[$SortOrder][1]]; $DB->prepared_query(" SELECT table_name, engine, table_rows, avg_row_length, data_length, index_length, data_free FROM information_schema.tables WHERE table_schema = ? ORDER by $orderBy $orderWay ", SQLDB ); $Tables = $DB->to_array('table_name', MYSQLI_ASSOC); $data = []; foreach ($Tables as $name => $info) { switch ($SortOrder) { case 'freeratio': $data[$name] = round($info['data_length'] == 0 ? 0 : $info['data_free'] / $info['data_length'], 2); break; case 'totalsize': $data[$name] = $info['data_length'] + $info['index_length']; break; default: $data[$name] = $info[$SortOrderMap[$SortOrder][0]]; } } View::show_header('Database Specifics'); ?>
| = $header->emit('name', $SortOrderMap['name'][1]) ?> | = $header->emit('rows', $SortOrderMap['rows'][1]) ?> | = $header->emit('rowsize', $SortOrderMap['rowsize'][1]) ?> | = $header->emit('datasize', $SortOrderMap['datasize'][1]) ?> | = $header->emit('indexsize', $SortOrderMap['indexsize'][1]) ?> | = $header->emit('datafree', $SortOrderMap['datafree'][1]) ?> | = $header->emit('freeratio', $SortOrderMap['freeratio'][1]) ?> | = $header->emit('totalsize', $SortOrderMap['totalsize'][1]) ?> |
| = $t['engine'] != 'InnoDB' ? '' : '' ?> = display_str($t['table_name']) ?> = $t['table_name'] == 'email' ? '' : '' ?> | = number_format($t['table_rows']) ?> | = Format::get_size($t['avg_row_length']) ?> | = Format::get_size($t['data_length']) ?> | = Format::get_size($t['index_length']) ?> | = Format::get_size($t['data_free']) ?> | = round($t['data_length'] == 0 ? 0 : ($t['data_free'] / $t['data_length']) * 100, 2) ?> | = Format::get_size($t['data_length'] + $t['index_length']) ?> |
| = number_format($TotalRows) ?> | = Format::get_size($TotalDataSize) ?> | = Format::get_size($TotalIndexSize) ?> | = Format::get_size($TotalFreeSize) ?> | = round($TotalDataSize == 0 ? 0 : ($TotalFreeSize / $tTotalDataSize) * 100, 2) ?> | = Format::get_size($TotalDataSize + $TotalIndexSize) ?> |