2017-05-10 3 views
0

Ich versuchte, eine solution for MySQL anzupassen, aber es stellt sich heraus information_schema.innodb_table_stats ist leer. SHOW INDEX FROM schema_name.table_name schneidet es nicht, indem es nur Kardinalität zeigt.Wie erhält man die InnoDB-Tabellenindexgröße auf einem Replikat mit MariaDB 5.5?

+0

Die Tabelle sollte nicht leer sein. Es wird andere Spaltennamen als "mysql.innodb_table_stats" von der erwähnten Antwort haben, aber die Information sollte da sein. Hast du das mit einem einfachen 'Select' aus der Tabelle überprüft? Bleibt es leer, wenn Sie eine neue InnoDB-Tabelle erstellen? Sagt das Fehlerprotokoll etwas darüber? Was genau ist MariaDB 5.5.x? – elenst

Antwort

1

mysql.innodb_table_stats ist nicht verfügbar bis MySQL 5.6 und MariaDB 10.0. Davor ...

SHOW TABLE STATUS LIKE 'tablename'; 

werden Data_length, bereitzustellen, die die Menge an Raum, der von allen Indizes außer den PRIMARY KEY (im Fall von InnoDB) aufgenommen ist. Es gab keine Möglichkeit, die Größe einzelner Sekundärindizes zu ermitteln. Die PK ist mit den Daten "geclustert", so dass zusätzlich zu den Daten wirklich sehr wenig Platz benötigt wird.

Es ist generell nicht ratsam, dass ein Slave eine ältere Version als der Master hat, wenn Sie das tun.

Wonach suchen Sie wirklich?

+0

Danke. Ich bin auf der Suche nach der Größe, um herauszufinden, was der Erinnerungsdruck aufgrund dieses Index ist und was ich erwarten kann, wenn ich den Index ändere. Auf beiden Rechnern läuft die gleiche Version von MariaDB auf der gleichen Plattform, aus offensichtlichen Gründen. – l0b0

+0

Indizes werden nur im RAM "zwischengespeichert". Wenn der Index beispielsweise chronologisch geordnet ist (id oder datetime) und Sie nur "recent" -Reihen referenzieren, ist die "working set" viel kleiner als die gesamte Größe. Wenn andererseits Zugriffe zufällig sind (oder UUID-Index, der zufällig ist), dann ist die Größe des Index _is_ relevant. –

Verwandte Themen