Seite wählen

Korrekte Speicherbelegung von InnoDB Tabellen

von | Feb 21, 2012 | MySQL

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))

0 Kommentare

Trackbacks/Pingbacks

  1. Weekly Snap: Puppet Security, InnoDB & Doctrine Configuration › NETWAYS Blog - [...] explained how to configure InnoDB tables correctly with the help of tools such as [...]
  2. Weekly Snap: Puppet Security, InnoDB & Doctrine Configuration › NETWAYS Blog - […] explained how to configure InnoDB tables correctly with the help of tools such as […]

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Mehr Beiträge zum Thema MySQL

Alle User in MySQL anzeigen

Oftmals wachsen Datenbankinstallationen im Laufe der Zeit und man legt immer wieder für neue Projekte neue Datenbanknutzer an. Um hier den Überblick zu behalten, zeige ich kurz, wie man sich die jeweiligen Nutzer anzeigen lassen kann. Voraussetzungen: Command...

Monitor das Monitoring_by_ssh

Hellow, heute möchte ich euch zeigen, wie man schnell und einfach mit Icinga 2 seine bestehende Icinga 2 Infrastruktur monitoren kann. Jeder der sich damit schon mal befasst hat, wird schnell zu dem Ergebnis kommen: "Hey warte mal den Master kann ich ja nicht auf den...

rsync und was dann?

Diese Woche hatte ich die zweifelhafte Ehre die mit 1,6TB schon etwas größere MySQL-Datenbank (MariaDB) eines Kunden auf den zweiten Datenbankknoten zu spielen. Dabei war die Herausforderung das die ganze Show außerhalb der Geschäftszeiten von 17:30 Uhr bis max. 5:00...