Seite 1 von 1

Tunen von Contenido / Geschwindigkeitserhöhung um den Faktor

Verfasst: Do 24. Apr 2003, 07:02
von detlev
Ich hatte das Problem, dass mein zentrales Newsmodul, das über 43 installierte Clients sämtliche News aus den Newsverzeichnissen ausliest, eine Datenbankabfragezeit von 60 Sekunden brauchte.
Genauso benötigten andere Modul mit Ansteigen des Siteumfangs immer längere Rechenzeiten des mySQL-Servers.
Durch Indizieren der Datenbanktabellen ist die Abfragezeit des Newsmoduls von 60 Sekunden auf 0,4 Sekunden geschrumpft.
Das wirkt sich natürlich auch auf sämtliche anderen Abfragen aus.

Das hat meine Befürchungen um die Grenzen von Contenido erstmal wieder beruhigt.

So gings:

In den Tabellen
con_side_lang einen Index auf idside
con_cat_side Index auf idcat und Index auf idside,
con_cat_tree Index auf idcat,
con_cat_lang Index auf name und Index auf idcat

Verfasst: Do 24. Apr 2003, 08:01
von hk-cons
Hallo

ja eine Datenbank lebt eben :lol:
Und da bei einem CMS ja lesende Zugriffe auf die Datenbank wesentlich häufiger sind als inserts, fällt der Performancenachteil durch den zusätzlichen Index-Aufbau nicht wirklich ins Gewicht .... :P
Grundsätzlich sollten ja Felder, die in der WHERE-Bedingung abgefragt werden. indiziert werden .... es sei denn, diese Tabelle hat nur eine eng begrenzte Zahl von Rows

hmm .. ich sollte mal alle meine Datenbanken nachschauen

Gruß Harald :roll:

Verfasst: Do 24. Apr 2003, 09:55
von Knuds
hi detlev,

hab leider noch nicht so viele index in mysql-tabellen angelegt. deshalb wäre es cool, wenn du die kompletten sql-commandos posten könntest: ala

Code: Alles auswählen

alter table con_side_lang add index ???
wie kann ich mir dann bestehende indexe anzeigen lassen?

Code: Alles auswählen

show tables ?
wie misst du die performance der anfrage? gibt es da für ein script? 8)

danke :D
grüsse
knuds

Verfasst: Do 24. Apr 2003, 11:53
von detlev
alter table con_side_lang add index ('idside')
ist goldrichtig
die bestehenden Indizes siehst du im Dump der Tabellen
die Abfragezeit sehe ich direkt wenn ich auf der Befehlszeile des mysql-Servers die Abfragen einsetze

die einfachste Lösung der Administrierung ist über phpMyAdmin, dort siehst du alle Indizes, und kannst sie setzen.

Verfasst: Do 24. Apr 2003, 12:13
von detlev
alter table con_side_lang add index ('idside')
alter table con_cat_side add index ('idside')
alter table con_cat_side add index ('idcat')
alter table con_cat_tree add index ('idcat')
alter table con_cat_lang add index ('idcat')

Gruße aus Bochum
Detlev