Adventure,PHP,Framework,PageController,FrontController,Pattern,Objektorientierung,OO,Software,Design,Wiederverwendbarkeit,UML,Tutorial,Benchmark,ausgezeichnete Performance

Suche:    
Downloads  |  SVN!  |  Roadmap  |  Forum!  |  Bugtracking  |  Gästebuch  |  Backlinks!  |  Referenzen!  |  Sitemap  |  Impressum  
 
Deutsch Adventure PHP Framework  Bookmark @ Technorati Bookmark @ del.icio.us Bookmark @ Mr. Wong Bookmark @ Simpy Bookmark @ Google Bookmark @ Digg.com Adventure PHP Framework Seite 065-Generischer-OR-Mapper-Performance-Hacks drucken!

Generischer OR-Mapper - Performance-Hacks (beta)

Artikel bewerten:
Dieser Artikel wurde noch nicht bewertet. Bewerten Sie diesen Artikel als erstes!

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.


Powered by WebRing.