Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Performance-Optimierungen in einem Forum

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
mgutt
PostRank 10
PostRank 10
Beiträge: 3206
Registriert: 08.03.2005, 13:13

Beitrag von mgutt » 26.09.2009, 13:53

Ich habe bereits:
- Diverse Zwischenspeicher für DB-Abfragen (vorhalten der Daten, Aktualisierung erst bei Änderung des Datensatzes)
- Struktur der Zwischenspeicher ist aufgeteilt, so dass pro Verzeichnis max. X Dateien enthalten sind
- Template-Caching

Weitere Performance-Optimierungen interessieren mich, daher hier meine Antwort auf diesen Beitrag:
xAaron hat geschrieben:Prepared Statements
Da lese ich mich aktuell ein, aber wirklich viel hilft PS auch nicht, wie mir scheint. Ich meine wie oft nutzt man die gleiche Abfrage, nur mit unterschiedlichen Parametern? Ich habe glaube ich zwei Stellen, wo ich mit einer Schleife einen INSERT absetze. Schade, dass PS nicht global funktioniert. Zumindest konnte ich dazu nichts finden.
persistente Verbindungen
Da gehen die Meinungen bei MySQL auseinander. Viele sagen, dass es völlig egal wäre und keinen Vorteil bringt.
DB-Partitionierung
Wenn das in MySQL 5 mal irgendwann funktioniert, dann vielleicht ja ;)

Ich für meinen Teil spiele ungern mit neuen Sachen herum, die nicht ausreichend getestet wurden. Da gibt es immer wieder gerne mal Sicherheitslecks.
gut aufgebaute Indizes
Das ist denke ich Standard. Ohne anständige Indizes, kackt ja eigentlich jede DB ziemlich schnell ab.
materialisierte Sichten
Gibts in MySQL (leider) nicht. Hört sich für mich aber ähnlich wie PS an. Oder ist es das "globale" Ding was ich bei PS vermisse?
FullTableScan
Sagte mir erst nichts, aber dadurch bin ich überhaupt darauf gekommen, dass es mysql.trace_mode gibt. Da werde ich doch mal schauen, ob es noch was zu optimieren gibt :P
Zuletzt geändert von mgutt am 29.09.2009, 13:18, insgesamt 3-mal geändert.
Ich kaufe Dein Forum!
Kontaktdaten

Anzeige von ABAKUS

von Anzeige von ABAKUS »


Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

xAaron
PostRank 5
PostRank 5
Beiträge: 329
Registriert: 23.08.2009, 18:10

Beitrag von xAaron » 26.09.2009, 15:59

mgutt hat geschrieben:
xAaron hat geschrieben:Prepared Statements
Da lese ich mich aktuell ein, aber wirklich viel hilft PS auch nicht, wie mir scheint. Ich meine wie oft nutzt man die gleiche Abfrage, nur mit unterschiedlichen Parametern?
Da hast du recht. Aus Optimierungssicht macht das nur in Spezialfällen und bei bestimmten DBMS, z.B. nicht bei MySQL, Sinn.
mgutt hat geschrieben:
persistente Verbindungen
Da gehen die Meinungen bei MySQL auseinander. Viele sagen, dass es völlig egal wäre und keinen Vorteil bringt.
Ok, ich bin bei MySQL nicht so firm, aber das soll keinen Sinn machen? Es ist in etwa gleich effizient 1000 Mal eine Verbindung zum Server aufzubauen, wie sie ein Mal aufzubauen? Das glaub ich nicht. Grundvorraussetzung ist natürlich, dass PHP als Modul drin ist, sonst macht das natürlich keinen Sinn.
Allein der overhead eine Verbindung zu öffnen macht schon einiges an Zeit und Last für den Server aus.
An deiner Stelle würde ich das mal testen, ob nicht gerade hier die Performance-Bremse bei deinen Projekten liegt.
mgutt hat geschrieben:
DB-Partitionierung
Wenn das in MySQL 5 mal irgendwann funktioniert, dann vielleicht ja ;)

Ich für meinen Teil spiele ungern mit neuen Sachen herum, die nicht ausreichend getestet wurden. Da gibt es immer wieder gerne mal Sicherheitslecks.
Sicherheitslecks musst du dabei nicht befürchten. Es macht halt gerade für ein Forum, wo im großen und ganzen nur die aktuelleren Daten gebraucht werden schon Sinn, da dann die Partition der aktuellen Daten gut im Arbeitsspeicher liegen kann.
mgutt hat geschrieben:
gut aufgebaute Indizes
Das ist denke ich Standard. Ohne anständige Indizes, kackt ja eigentlich jede DB ziemlich schnell ab.
Ja, aber index ist nicht gleich index. Nicht umsonst kann man als reiner DB-Designer ganz gut leben. So können Indizes so komponiert sein, dass sie gut aufeinander aufbauen usw. Das ist bei komplexen Abfragen eine Kunst für sich.
mgutt hat geschrieben:
materialisierte Sichten
Gibts in MySQL (leider) nicht. Hört sich für mich aber ähnlich wie PS an. Oder ist es das "globale" Ding was ich bei PS vermisse?
Der Unterschied ist himmeldweit: Bei PS wird die Abfrage gespeichert und eventuell die optimierte Variante. Das bringt nur selten was. Materialisierte Sichten speichern ein Abfrageergebnis. MS ist also eine neue virtuelle Tabelle.
Beispiel: In der Tabelle sind alle Käufe von Autos der letzten 10 Jahre. Jetzt brauchst du häufig die Anzahl der Porsche-Käufe in einem Monat des letzten Jahres. Also für Januar oder für März oder einen anderen Monat. D.h. du hast hoffentlich einen passenden Index der Tabelle, der in den Hauptspeicher passt, sonst hast du ein Problem.
Du könntest jetzt eine Materialiserte Sicht erstellen, die dir die Porsche-Verkäufe des letzten Jahres gibt. Dann hast du eine Tabelle, die nur die Porsche-Käufe und nur des letzten Jahres enthält, was schon eine riesige Einsparung ist. Gleichzeitig wird die Tabelle synchron zur Muttertabelle gehalten. Jetzt wird das DBMS für jede Anfrage, die nach dem Porsche-Käufen in einem der letzten Monate fragt nur unter Nutzung der MS beantworten und das ist natürlich viel schneller, da auf der MS natürlich auch wieder ein Index sein kann, als eine Abfrage an die große Tabelle.
mgutt hat geschrieben:
FullTableScan
Sagte mir erst nichts, aber dadurch bin ich überhaupt darauf gekommen, dass es mysql.trace_mode gibt. Da werde ich doch mal schauen, ob es noch was zu optimieren gibt :P
Ja, Full Table Scan ist Quasi der Albtraum schlechthin. Wenn du es mit Indizes schaffst den zu verhindern hast du schon 90% der Optimierungsarbeit erledigt.
Sehr geehrter Herr SEO Guru, ich habe eine frage zu Ihren Backlink Tipps. Es ist nämlich nicht so einfach ein Raumschiff zu bauen um einen Backlink von der NASA zu bekommen... bitte antworten Sie auf meine Mails. Zitat von winman.de

xAaron
PostRank 5
PostRank 5
Beiträge: 329
Registriert: 23.08.2009, 18:10

Beitrag von xAaron » 26.09.2009, 16:33

Noch als Nachtrag, auch wenn wir jetzt weit weg vom Thema sind: Besser als Datenbank-Optimierung ist natürlich die fertige html-Ausgabe gecached zu haben und die einfach wieder rauszuschicken, solange bis sich in der DB entsprechende Einträge ändern. Das würde die Performance am meisten steigern. Bei einem Chat mag das nur begrenzt gehen, aber bei Foren wäre das ein unheimlicher Performance-Gewinn.
Sehr geehrter Herr SEO Guru, ich habe eine frage zu Ihren Backlink Tipps. Es ist nämlich nicht so einfach ein Raumschiff zu bauen um einen Backlink von der NASA zu bekommen... bitte antworten Sie auf meine Mails. Zitat von winman.de