- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Performanceproblem beim Generieren von RSS-Feeds
Hallo zusammen,
in einem aktuellen Kunden Projekt haben wir ein doch recht massives Performance-Problem bei der Generierung von RSS Feeds.
Die Feeds basieren auf einem Datenmodell fรผr News.
Jeder News-Datensatz ist via Fremdschlรผsselbeziehung (n:1) mit einer Kategorie, einem Geschรคftsbereich oder einem Standort oder einer region verbunden.
Die Anforderung ist nun, dass zu jeder Kategorie bzw. zu jeder Ausprรคgung jeweils ein RSS Feed a 5 News generiert werden soll.
Auf Basis einer Contentprojektion haben wir verschiedene Methoden ausprobiert, um die News abzufragen..via QUERY XML, contentSelect und Fremdschlรผsselbeziehung (division.newsList) abzufragen. In jedem der 3 Fรคlle haben wir Generierungszeiten von 6-8 Sekunden fรผr 5 News (~1,6 Sekunden pro News). Gibt es hier eine Empfehlung, wie man diese Anforderung umsetzen kรถnnte bzw. eine Best-Practice ? Anbei das Template und Datenmodell.
Danke im Voraus und Gruร
- Labels:
-
Developers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Lars,
erst mal ein paar allgemeine Empfehlungen:
- Query Logging in der Datenbank aktivieren. Bei MySQL gibt es auch sowas wie ein Slow-Query-Log. Dort kann man zum Beispiel alle Abfragen loggen, die lรคnger als 1 Sekunde brauchen
- EXPLAIN fรผr die langsamen Abfragen ausfรผhren, um zu schauen ob Indizes genutzt werden oder nicht
- Ggf. passende Indizes in der Datenbank setzen
Oft bringt das schon erhebliche Geschwindigkeitsverbesserungen, besonders wenn Joins รผber mehrere Tabellen erfolgen, wie das auch hier der Fall ist.
Wie du schon gemerkt hast machen die unterschiedlichen Arten von Abfragedefinitionen kaum einen Unterschied, da die generierten SQL-Abfragen identisch sein sollten.
Sollten Indizes nicht zum gewรผnschten Erfolg fรผhren, kann man noch versuchen die Zahl der notwendigen Joins zu reduzieren. Aber auch dazu mรผsste man sich zuerst mal die erzeugten SQL Statements und EXPLAIN Ausgaben anschauen.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Christoph,
zunรคchst vielen Dank fรผr Deine Antwort.
Leider liegt es (offenbar) nicht an der SQL DB bzw. an den Statements, denn in meiner Beschreibung von oben hatte ich vergessen zu erwรคhnen, dass wir die SQL-Statements bereits schon mit CA Wily Introscope รผberprรผft haben.
Die Ausfรผhrungszeit der Statements, im besonderen des Main-Statements (SELECT FIELDS FROM NEWS WHERE FS_ID IN(....) ) liegt bei ~ 20 -30ms (mit erweiterter Indizierung) bei ~ 30.000 Datensรคtzen.
Diese Zeiten konnten wir auch รผber eine Zeitmessung im Template nachvollziehen. Offenbar liegt der "Flaschenhals" irgendwo dazwischen..OR Mapper - Lazy-Load Problematik!?
Laut Wily vergeht auch eine geraume Zeit bis die Verbindung wieder geschlossen wird.
Folgende Dinge waren weiterhin auffรคllig :
- Das bisher undokumentierte QUERY Attribut "limit" wird nicht mit dem Native-Statement abgesetzt. Dies wรผrde die Performance nocheinmal erheblich verbessen
- Wily verzeichnete eine Masse an ROLLBACKยดs die auch gewisse Zeitspannen in Anspruch nahmen,
Testumgebung:
OracleXE11
FS Version 4.2.468.50982 (2 GB reserviert)
Hast Du vlt. noch eine Idee an was es liegen kรถnnte?
Dank Dir und Gruร
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Habt ihr denn alle SQL-Abfragen betrachtet, die bei der Generierung der Seiten abgesetzt werden? Sofern es sich um eine Lazy-Loading Problematik handeln sollte wรผrde sich das ja in einer entsprechenden Menge an SQL-Abfragen niederschlagen.
Wieviel Zeitunterschied gibt es denn zwischen der Gesamtsumme an Abfragenzeiten (SQL) und der Generierungszeit?

