Heute halten wir uns recht einfach und sprechen über die Thematik der Speicherplatzbelegung von InnoDB Tabellen. Eine schlichte Kontrolle der reellen Nutzung ist hier einerseits wegen einem globalen Speicher für alle Tabellen aller DBs nicht möglich. Und wenn man die files_per_table Option aktiv hat, können auch noch reservierte, ‘freie’ Speicherbereiche in den Daten z.B. ein Summierung des Verzeichnis beeinflussen.
Daher müsste man von Tools wie z.B. phpMyAdmin gebraucht machen, um dies einmal kontrollieren zu können. Aber mit Zugriff auf das MySQL kann man auch über die Statusausgabe der Tabellen den benötigten Platz einsehen und errechnen. In der Übersicht der Informationen sind hier die Felder Data_length und Index_length entscheident.
Wenn man nun als Admin einmal schnell die Belegung über die Konsole abfragen möchten, könnte man sich mit folgenden Skript dafür helfen. Es wird mit der jeweligen Datenbank als Parameter aufgerufen und setzt einen Zugang zum MySQL mittels .my.cnf voraus:

#!/bin/bash
DATABASE=$1
TMPFILE="/tmp/$DATABASE-size"
mysql -e "show table status from $DATABASE;" > $TMPFILE
NAME=`head -n 1 $TMPFILE | sed -r 's/\t/\n/g' | grep -n Name | cut -d':' -f 1`
DATA=`head -n 1 $TMPFILE | sed -r 's/\t/\n/g' | grep -n Data_length | cut -d':' -f 1`
INDEX=`head -n 1 $TMPFILE | sed -r 's/\t/\n/g' | grep -n Index_length | cut -d':' -f 1`
echo -e "Name\t\tData_length in MB\t\tIndex_length in MB"
tail -n+2 $TMPFILE | awk '{print $'$NAME'"\t\t"$'$DATA'/1024/1024"\t\t"$'$INDEX'/1024/1024}'
echo
echo
echo -en "Sum in MB\t: "
for LINE in `tail -n+2 $TMPFILE | awk '{print $'$DATA'"\n"$'$INDEX'}'`; do
COUNT=$[$COUNT+$LINE]
done
echo $(($COUNT/1024/1024))