Quicknavi |
|
Generischer OR-Mapper - Performance-Hacks (beta)
1. Einleitung
Der OR-Mapper ist grundsätzlich auf maximale Performance ausgelegt, jedoch kann dieser durch
ungünstige Implementierung der darüberliegenden Schichten oder durch nicht optimale
Definition der Tabellen negativ beeinflusst werden. Das vorliegende Kapitel zeigt Themen auf, bei
denen ein manueller Eingriff in die Mapperschicht oder die Verwendung der Mapper-Schicht positive
Performance-Effekte hat.
2. Performance-Hacks
2.1. Häufige Abfrage über Attribute
Werden Abfragen häufig über Attribute eines Objekts definiert bzw. eingeschränkt, so
ist es ratsam, einen Index auf die verwendete Spalte oder die verwendeten Spalten zu legen.
2.2. Erzeugen der Mapperschicht
Stellt es für die Applikation kein Problem dar, sollte der OR-Mapper im
SESSIONSINGLETON-Modus erstellt werden. Das bietet den Vorteil, dass die
Mapping- und Relation-Table innerhalb des Mappers nur einmal innerhalb einer Session erstellt werden.
Diese Maßnahme spart ~10% Performance bei jedem weiteren Aufruf der Applikation. Die folgenden
Code-Zeilen zeigen, wie der Mapper SESSIONSINGLETON erzeugt werden kann:
// Mapper-Factory holen $ORMFactory = $this->__getServiceObject('modules::genericormapper::data','GenericORMapperFactory');
// Mapper erzeugen $ORM = &$ORMFactory->getGenericORMapper( '{NAMESPACE}', '{NAMEAFFIX}', '{CONNECTIONKEY}', 'SESSIONSINGLETON' // <-- Indiziert Erstellung im Modus SESSIONSINGLETON );
2.3. JOIN-Optimierung
Um bei Abfragen über mehrere Objektbeziehungen hinweg mehr Performance zu erreichen, wird dazu
geraten, die JOIN-Anweisungen selbst zu formulieren, da dort die Reihenfolge der JOINs und deren
Einschränkungseigenschaften die Ausführungszeiten erheblich beeinflussen kann. Hierbei
ist es jedoch wichtig, dass die am stärksten einschränkenden JOINs zuerst platziert werden.
Kommentare
Möchten Sie den Artikel eine Anmerkung hinzufügen, oder haben Sie ergänzende Hinweise? Dann können Sie diese hier einfügen. Die bereits verfassten Anmerkungen und Kommentare finden Sie in der untenstehenden Liste.
Für diesen Artikel liegen aktuell keine Kommentare vor.
|