2009-02-19 8 views

Antwort

134

Es scheint, dass der Overhead temporärer Speicherplatz ist, den die Datenbank zum Ausführen einiger Abfragen verwendet hat. Sie sollten sich also nur sorgen, wenn dies wirklich hoch wird.

Sie können "Optimierung der Tabelle" mit der Defragmentierung Ihrer Festplatte vergleichen.

Ich zitiere:

Jede Datenbank wird im Laufe der Zeit erfordert irgendeine Form von Wartung zu hält sie an einer optimalen Leistung Ebene. Löschen gelöschter Zeilen, Resequenzierung, Komprimierung, Verwaltung Indexpfade, Defragmentierung usw. ist was als OPTIMIZATION in Mysql und anderen Begriffen in anderen Datenbanken bekannt ist. Zum Beispiel ruft IBM DB2/400 sie PHYSICAL FILE MEMBER REORGANISIEREN.

Es ist eine Art wie das Öl in Ihr Auto zu wechseln oder eine Abstimmung zu bekommen. Sie können denken, dass Sie wirklich nicht müssen, aber durch tun, damit Ihr Auto viel besser läuft, erhalten Sie bessere Benzinverbrauch, etc. Ein Auto , das viele Kilometer erfordert tune-ups häufiger. Eine Datenbank, die bekommt, erfordert dasselbe. Wenn Sie eine Menge von UPDATE und/oder DELETE-Operationen, und vor allem, wenn Ihre Tabellen haben variable Länge Spalten (VARCHAR, TEXT, etc), müssen Sie , um 'dran zu bleiben.

+1

@Jasper Sind die Tabellen während der Dauer der Optimierung vollständig gesperrt (Lesen/Schreiben nicht möglich)? – Pacerier

+4

Woher kam dieses Zitat? Ich finde viele Ergebnisse in Google. –

+0

Woher wissen wir, was den Overhead immer wieder verursacht? – mahen3d

75

Wenn Sie über die Sache reden, dass phpMyAdmin Anrufe overhead, dann tatsächliche Größe einer Tabelle Daten-Datei in Bezug auf die ideale Größe des gleichen Datenfile es ist (als ob, wenn nur aus einer Sicherung gestellt).

Aus Leistungsgründen komprimiert MySQL die Datendateien nicht, nachdem Zeilen gelöscht oder aktualisiert wurden.

Diese overhead ist schlecht für Tabellenscan, ich. e. Wenn Ihre Abfrage alle Tabellenwerte durchlaufen muss, muss mehr leerer Speicherplatz gesucht werden.

Sie können die overhead durch Ausführen von OPTIMIZE TABLE loswerden, die Ihre Tabelle und Indizes verdichten wird.

+6

Die mysql-Dokumentationsgröße sagt "OPTIMIZE TABLE sollte verwendet werden, wenn Sie einen großen Teil einer Tabelle gelöscht haben oder wenn Sie viele Änderungen an einer Tabelle mit Zeilen variabler Länge vorgenommen haben", das ist mein Fall, danke :) – boclodoa

7

Overhead ist Data_free einer Tabelle, das ist Die Anzahl der zugewiesenen aber nicht verwendeten Bytes. Wir können es durch SQL-Befehl finden SHOW TABLE STATUS. Es ist der freie Speicherplatz in der zugewiesenen Größe für Ihren Tisch.

1

Tabelle optimieren kann sehr problematisch sein. Zum Beispiel, wenn die Tabelle stark auf einer Site verwendet wird.

http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html

Nach einem großen Teil eines MyISAM oder Archivtabelle löschen oder um viele Änderungen an einer MyISAM oder Archivtabelle mit variabler Länge Reihen (Tabellen, die VARCHAR, VARBINARY, BLOB oder Text haben Säulen). Gelöschte Zeilen werden in einer verknüpften Liste verwaltet, und nachfolgende INSERT-Operationen verwenden alte Zeilenpositionen erneut. <

Ich glaube, ich habe dieses Verhalten bestätigt. Und es wäre sicherlich sehr nützlich.

Verwandte Themen