phpbar.de logo

Mailinglisten-Archive

Tabelle voll - was nun ...

Tabelle voll - was nun ...

Andreas Müller mysql at universalware.de
Die Jun 13 17:25:09 CEST 2006


Hallo Norbert,

> InnoDB habe ich unter Windoof noch nirgends flott laufen sehen
> und langsam kann MyISAM auch:

InnoDB läuft bei mir auf einer 40 GB Datenbank unter Windows richtig flott.
Die befürchteten Performanceeinbusen bei der Umstellung von MyISAM auf
InnoDB waren nicht zu verzeichnen. Die Datenbank enthält einige Tabellen
zwischen 10 und 30 Millionen Datensätze. Der benötigte Plattenplatz liegt je
nach Daten beim Faktor 2 bis 2,5 von MyISAM Tabellen. Da InnoDB auch
Nutz-Daten und nicht nur Index-Daten wie MyISAM cacht lohnt es sich hier die
InnoDB Puffer etwas höher zu wählen als bei MyISAM (so Faktor 1,5 bis 2).
Bei solch einer Umstellung sollte man prüfen ob anschließend noch MyISAM
Tabellen verwendet werden auf dem Server und den Key-Buffer entsprechend
reduzieren - der würde sonst brach liegen und nur RM verschwenden.

> ALTER TABLE tblSignal CHANGE strTimeStamp dTimeStamp datetime;
> Query OK, 16268486 rows affected (12 min 35.61 sec)
> Datensätze: 16268486  Duplikate: 0  Warnungen: 0
> 
> ALTER TABLE tblSignal ADD KEY(dTimeStamp);
> Query OK, 16268486 rows affected (19 min 27.44 sec)
> Datensätze: 16268486  Duplikate: 0  Warnungen: 0

Das diese Statements langsam sind liegt an der Art und Weise wie MyISAM mit
Strukturänderungen umgeht. Dazu baut MyISAM zunächst eine temporäre Tabelle
auf in dem es die Daten aus der originalen Tabelle kopiert und baut danach
im Fall von Index Änderungen alle Indices nacheinander neu auf. Seit 4.1
kommt es mir vor als ob er wenigstens ab und an so schlau ist und bestehende
Indices nur umkopiert und nicht neu sortiert. Ab MySQL 5.0 bzw. 5.1 soll
sich da noch einiges getan haben sowas solche banalen Änderungen schneller
von statten gehen.

Gruß,
Andreas


-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive