phpbar.de logo

Mailinglisten-Archive

Performance-Problem

Performance-Problem

Marc Albrecht mysql-de_(at)_lists.bttr.org
Sun, 10 Feb 2002 19:45:03 +0100


Moin,

> > Meine Frage bezieht sich - das versuche ich gerne noch einmal darzulegen
> > - darauf, wie wir bei einer 360MB-großen MYD-Datei auch die Datensätze,
> > die in der Tabelle (primary key!) weiter "hinten" liegen, in adäquater
> > Geschwindigkeit erhalten können.
>
> MYSQL sortiert nicht nach dem Primary Key. Ich hab leider deine Frage
nicht
> hier, aber ich denk mal die Frage, die ich hab wird da nicht drin stehen.
Wird
> in dieser Tabelle oft gelöscht und neu eingefügt, kann es also sein, das
viele
> Lücken in den MyISAM Blöcken stehen und diese wieder durch neuere
Datensätze,
> die eigentlich "hinten" stehen müssen gefüllt werden?

Nein, in der betreffenden Tabelle wird _meist_ geINSERTed (aber immer mit
neuen Primary IDs, wobei, wenn mySQL das ignoriert, das wohl weniger wichtig
ist), ab und zu jedoch "am Block" auch deleted. geUPDATEd wird recht selten
(bis nie).

> Hast du schon mal einen optimize Table gemacht und dann die Performance
> getestet?

Wir haben sogar die Tabelle per Script ausgelesen und in eine Kopie
eingefügt (also sozusagen eine brute force garbage collection durchgeführt).
Das Ergebnis ist nahezu 100%ig identisch.

> Ich hab mal kurze Tests gemacht, in einer Tabelle mit ca. 200k Einträgen.
Je
> nachdem, wo ich die Datensätze rausnehme, schwankt die Zeit um ca. Faktor
50.
> Also im allgemeinen kann ich dein Problem bestätigen (und nein, AFAIK
wurde
> _diese_ Tabelle nur einmal gefüllt, und verrichtet seitdem ihren Dienst.

Woops. Das haut ja in die gleiche Kerbe - und dürfte, wenn es sich als ein
_generelles_ Problem herausstellt, für unsere weiteren Projekte das absolute
KO-Kriterium für mySQL sein... das möchte ich nicht hoffen, denn ich fühle
mich mittlerweile sehr wohl mit dieser Lösung.

> > Für HILFE wäre ich sehr dankbar. Ich geben gerne jede Art von
> > Information heraus, die hierbei helfen kann. Ideologische Diskussionen
> > bringen mich aber (leider) nicht weiter.
>
> Dann verbreit keinen ideologischen Schwachsinn, dann muss den keiner
> korregieren.

Ich verbreite gar nichts sondern gebe schlichtweg Infos zu dem von mir
bemerkten Problem bekannt. Es ärgert mich aber, die gleichen Informationen
doppelt geben zu müssen, dafür bitte ich um Vergebung.

Du bestätigst ja (leider!) mit Deinem Test meine Befürchtungen, es hier mit
einem Design-Fehler von mySQL zu tun zu haben. Ich warte noch etwas auf
alternative (Test?) Vorschläge, an welcher Stelle wir schrauben können. Ich
hänge z.B. gerne statt 2 RAID0-Platten 10 rein - gar kein Problem. Wenn ich
weiss, daß ich dann vernünftige Performance erhalte... auch andere
Filesysteme könnte man probieren oder optimierte Blocksizes (es sollte ja
kein Problem sein, die durchschnittliche Zeilengröße aus der Tabelle zu
bekommen und daraus einen sinnvollen Wert für die Blocksize des Filesystems
abzuleiten - das System, um das es geht, bedient NUR diesen
Aufgabenkomplex).

Ideen in dieser Richtung würde ich gerne ausprobieren. Ich habe auch schon
erwogen, die Tabelle horizontal zu verkleinern (statt 35 Spalten 3 x 12 zum
Beispiel) - auch wenn das mir nicht sehr sympatisch erscheint.

> Im übrigen gibts keinen Grund, in der Gegend rumzuschreien.

Oh, manchmal ist es notwendig, wichtige Komponenten deutlich
herauszustellen - und da hilft Schreien durchaus :-)

Marc Albrecht

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



php::bar PHP Wiki   -   Listenarchive