Cache - DOAG

Werbung
Erfahrungen mit TopLink in einem
Projekt
Performance-Aspekte von TopLink
Auszug aus einer Diplomarbeit
14. Februar 2017
Erfahrungen mit TopLink in einem
Projekt
14. Februar 2017
Die Applikation

Südseite: ca. 800.000 komplexe Datensätze müssen pro Tag verarbeitet
werden.

Werden in DB gespeichert

Müssen mit vorhandenen Datensätzen verglichen werden

Nordseite: Ein abfragendes und zwei aktiv zu versorgendes System mit
wenigen hundert Datensätzen pro Tag

Sonstiges:

Die Daten werden 14 Tage vorgehalten

Die Logik ist in Java implementiert, DB ist Oracle

Es sollen zwei Websphere Application Server eingesetzt werden
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 2
Warum OR-Mapping mit TopLink?
1.
Relationale DB ist gesetzt, heißt Oracle
2.
Application Server ist ebenfalls gesetzt, heißt WebSphere
3.
Zwischen diesen Welten muss vermittelt werden
4.
Eigene Mapping-Schicht – in anderen Projekten eingesetzt – ist aufwändig
5.
TopLink ist ein OR-Mapper, der am Markt verfügbar ist, wird auch in
anderen Projekten eingesetzt.
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 3
Der Cache

Hält Objekte vor, so dass nicht alles aus der Datenbank gelesen werden
muss

Die Suche im Cache erfolgt nach Primärschlüssel.

Toplink hält mehrere Caches vor: Session-Cache, Unit-of-Work-Cache.

Sorgt für Probleme mit anderen Zugriffen auf die Datenbank, z.B. Stored
Procedures

Problematisch, wenn mit mehreren Clients über Toplink auf die DB
zugegriffen werden soll

Cache-Synchronisierung ist eine Lösung, sorgt aber für erhöhten auch
unsinnigen Datenverkehr.

Nicht immer realisierbar
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 4
Lösch-Job trotz eingeschaltetem Cache

Funktioniert!

Voraussetzung: Alle Tabelle haben künstliche Primärschlüssel

Zusammengesetzte Primärschlüssel nicht benutzen (Beziehungstabellen)

Bei natürlichen Primärschlüsseln kommt es zu Problemen, wenn ein
gelöschtes Objekt wieder erzeugt werden soll
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 5
Probleme mit dem Caching auf der Südseite

Viele Optimistic Locks, wenn auf zwei Servern verteilt, weil zu alte Objekte
im Session-Cache gefunden werden

Für die Cache-Synchronisierung muss ein IBM-MessageBroker eingesetzt
werden, der extrem teuer ist

Synchronisierung würde viele überflüssige Daten transferieren

Zeiten für die Verarbeitung bei Single-Server-Betrieb: ca. 190ms pro Satz,
durch Parallelität im Server verbesserbar.

Ein Lösung: Cache-Such-Strategie: Unit-of-Work, Datenbank. SessionCache nicht vertrauen! Das wird aber nicht angeboten.

Erkenntnis: Die Applikation ist bei eingeschaltetem Cache nur auf einer
Maschine einsetzbar

Hinweis während der Präsentation: In TopLink 10.1.3 wird es einen IsolatedClient-Cache geben, der sehr wahrscheinlich die Lösung für oben genannte
Probleme ist.
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 6
Probleme ohne Caching auf der Südseite

Auch bei der Suche nach Primärschlüssel werden die Daten immer aus der
Datenbank geholt

Bei einem Schnittstellensatz werden Objekte mehrfach aus der DB gelesen

Sogar bei einer Named Query werden wegen des zyklischen Datenmodells
einzelne Objekte mehrfach gelesen

Massiver Einsatz von Indirections mildert das Problem

Zeiten für die Verarbeitung eines Satzes: ca. 500 ms
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 7
Sequencing (Primärschlüsselvergabe)

Toplink empfiehlt den Einsatz einer Sequencing-Tabelle

Locks auf dieser Tabelle

Besser: Oracle-Sequenzen einsetzen
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 8
Performance-Aspekte von TopLink
Auszug aus einer Diplomarbeit
14. Februar 2017
Gliederung

Vorstellung der Diplomarbeit

Performance-Einstellungen von TopLink

Beschreibung des Testablaufs

Performance Profiler

Ergebnisse
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 10
Vorstellung der Diplomarbeit

Thema:



Analyse und Bewertung eines objektrelationalen Mapping-Tools für
einen Systemintegrator
Aufgabe:

Analyse von Performance-Einstellungen

Auswirkungen der Einstellungen ermitteln

Einsatzmöglichkeiten aufzeigen
Ziel:

Optimierung des Frameworks der Projekte
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 11
Performance-Einstellungen von TopLink (1/4)
Eine Auswahl


Performance-Einstellungen haben Auswirkungen auf die Performance von TopLink
Zumeist aktivierbar über Mapping-Workbench, teilweise nur über API:

Indirection
 „Just in time“ Loading von abhängigen Objekten
 Nur die erforderlichen Objekte werden erzeugt

Batch Reading
 Lesen aller abhängigen Objekte auf einmal
 Verringerung der SQL-Statements

Join Reading
 Lesen aller abhängigen Objekte auf einmal
 Nur 1:1-Beziehung
 Join zwischen den in Beziehung stehenden Tabellen
 Verringerung der SQL-Statements
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 12
Performance-Einstellungen von TopLink (2/4)
Eine Auswahl

Named Queries
 Vordefinierte Abfragen (SQL, EJBQL, Expression)
 Gespeichert in TopLink-Session unter Namen
 Verkürzung der Vorbereitungszeit

Cache
 Zwischenspeicherung von Objekten
 Temporär deaktivierbar
 Schneller Zugriff auf bestehende Objekte, ohne DB-Zugriff

Cursored Streams
 Abfrageergebnisse können als kleinere Blöcke ausgelesen werden
 Es werden nicht gleich alle Objekte erzeugt, nur die Benötigten
 Reduzierung der Zahl erzeugter Objekte
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 13
Performance-Einstellungen von TopLink (3/4)
Eine Auswahl



Report Queries

Auslesen von einzelnen Datenwerten, keine Objekte

Unterstützung der Aggregatfunktionen, z.B. SUM, MAX, COUNT

Beschleunigter Datenzugriff
Sequencing

Vergabe von eindeutigen Identifikatoren für Objekte

Vorbelegung von Sequenznummern

Verringerung der Datenbankzugriffe
Batch Writing

Zusammenfassung von mehreren Änderungsabfragen in einem
Statement

Verringerung der Kommunikation zwischen Anwendung und Datenbank
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 14
Performance-Einstellungen von TopLink (4/4)
Eine Auswahl


Parameterized SQL

Werte der Übergabeparameter werden erst zur Laufzeit an das
Statement gebunden

Voraussetzung für Prepared Statement Caching
Prepared Statement Caching

Zwischenspeichern von JDBC Prepared Statements

Verkürzung der Vorbereitungszeiten
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 15
Beschreibung des Testablaufs


Performance Test mit Profiling

Ausführungsdauer

Zeiten in verschiedenen Bereichen zwischen Anwendung und
Datenbank
Tests in zwei Projekten

Untersuchung des Verhaltens unter verschiedenen Voraussetzungen

Ergebnisse bestätigen oder widerlegen

Erstellen eines Testszenarios für jede Einstellung

Zufällige Auswahl von geeigneten Klassen/Tabellen

Auswahl/Erstellung von Testfunktionen

Testergebnis ist Durchschnitt aus fünf Testdurchläufen
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 16
Performance Profiler (1/3)

Profiling-Tool speziell für TopLink

Zeichnet Statistiken für jede einzelne Abfrage auf

Folgende Informationen werden aufgezeichnet:

Klasse der Abfrage (z.B. ReadAllQuery)

Domain-Klasse der abgefragten Objekte

Anzahl der Objekte

Anzahl der Objekte die pro Sekunde bearbeitet werden

Zeit für die Ausgabe von Logging-Informationen
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 17
Performance Profiler (2/3)

Gesamtzeit:
− Dauer der gesamten Ausführung der Query

Lokalzeit:
− Zeit, die auf der Workstation der Users verbracht wird

SQL Prepare:
− Vorbereitungszeit für das SQL-Statement in Low Level JDBC mit
Binden von Parameterwerten

SQL Execute:
− Ausführungszeit des SQL-Statements auf der Datenbank, vom
Senden des SQL bis zum Empfangen des Ergebnisses; Low
Level JDBC

Row Fetch:
− Zeit zum Lesen der Zeilen aus dem Result Set nach Java,
hauptsächlich die Zeit von JDBC zum Holen der Daten und
Durchführen von Konvertierungen
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 18
Performance Profiler (3/3)

Cache:
− Zeit für das Durchsuchen und Updaten des Objektcaches,
beinhaltet ebenfalls das Anfordern von Locks

Object Building:
− Zeit für das Erzeugen des Domain-Objekts mit allen
Abhängigkeiten

Query Prepare:
− Zeit zum Vorbereiten der Query vor ihrer Ausführung in TopLink

SQL Generation:
− Zeit zur Erzeugung des SQL-Statements bevor es zur Datenbank
geschickt wird
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 19
Ergebnisse

Übersicht

Indirection

Batch Reading

Objekte im Cache

Lesen über Unit of Work
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 20
Ergebnisse
Indirection

Ca. 1000 Quell-Objekte und 1000 abhängige Objekte
16000
14000
12000
10000
8000
6000
4000
2000
0
SQL Generation
Query Prepare
SQL Execute
SQL Prepare
Cache
Row Fetch
Object Building
ohne
Indirection
mit Indirection
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 21
Ergebnisse
Batch Reading

Ca. 8000 Quell-Objekte und 10000 abhängige Objekte

Reduzierung der SQLs von 10001 auf 2
70000
60000
SQL Generation
Query Prepare
SQL Execute
SQL Prepare
Cache
Row Fetch
Object Building
50000
40000
30000
20000
10000
0
ohne Batch
Reading
mit Batch
Reading
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 22
Ergebnisse
Objekte im Cache

1000 Objekte sollen erzeugt werden

Keine SQLs bei Cache-Zugriff
1200
1000
SQL Generation
Query Prepare
SQL Execute
SQL Prepare
Cache
Row Fetch
Object Building
800
600
400
200
0
ohne Cache
mit Cache
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 23
Ergebnisse
Lesen über Unit of Work

Ca. 2500 Objekte werden gelesen
5000
Register
SQL Generation
Query Prepare
SQL Execute
SQL Prepare
Cache
Row Fetch
Object Building
4000
3000
2000
1000
0
Session
Unit of Work
Performance-Aspekte von TopLink
Thomas Götz / Stefan Ohlemeyer
Seite 24
Herunterladen