Compiled Queries: LINQ-Abfragen mit Pegasus-Stiefeln © msg systems ag, August Gordon Breuer IT Consultant & Software Engineer Travel & Logistics
© msg systems ag, August Compiled Queries Das Problem Die Theorie Demo! Die Inhalte
© msg systems ag, August Wo / Wie entsteht das Problem
© msg systems ag, August LINQ λ (Lambda) Expression- Tree SQL Wo und wie entsteht der Performance-Engpass? IEnumerable linq = from customer in db.Customer where customer.LastName.StartsWith("B") select customer; IQueryable lambda = db.Customer.Where(customer => customer.LastName.StartsWith("B")); Expression > bedingung = s => s.LastName.StartsWith("B"); IQueryable lambda = db.Customer.Where(bedingung); SELECT * FROM Customer WHERE LastName = 'B%'
© msg systems ag, August LINQ λ (Lambda) Expression- Tree SQL Wo und wie entsteht der Performance-Engpass? IEnumerable linq = from customer in db.Customer where customer.LastName.StartsWith("B") select customer; IQueryable lambda = db.Customer.Where(customer => customer.LastName.StartsWith("B")); Expression > bedingung = s => s.LastName.StartsWith("B"); IQueryable lambda = db.Customer.Where(bedingung); SELECT * FROM Customer WHERE LastName = 'B%'
© msg systems ag, August Compiled Queries als Lösung
© msg systems ag, August Verfügbar seit.NET 3.5 Namensraum System.Data.Linq Statische Klasse CompiledQuery Compile ( Expression >) Compiled Queries
© msg systems ag, August Parameter = Objekt-Kontext für den Datenzugriff Letzter Parameter (n) = Rückgabewert 2. - (n-1). Parameter = Optionale Übergabeparameter In.NET 3.5 und Silverlight: Überladungen für bis zu drei Übergabeparameter In.NET 4.0+: Überladungen für bis zu 15 Übergabeparameter Sollten mehr gebraucht werden: Helferklasse Compiled Queries
© msg systems ag, August Aufruf in instanziierten Klassen? Statischer Kontext! Instanzen vs. Statische Klassen
© msg systems ag, August Deutlicher Geschwindigkeitszuwachs bei oft aufgerufenen Abfragen Anfänglicher Overhead wirkt sich bei wenigen Aufrufen negativ auf die Performance aus. Höherer Speicherverbrauch durch Zwischenspeichern der Funktionen. Schlechtere Lesbarkeit des Quellcodes. Die Vorteile Die Nachteile Die Vor- und Nachteile im Überblick
© msg systems ag, August Alle Compiled Queries in einer eigenen statischen Klasse sammeln Es muss immer der gleiche Data- Kontext verwendet werden Das zurückgegebene one-time Enumerable in eine Liste umwandeln Tipps zur Verwendung
© msg systems ag, August Demos in Visual Studio
Vielen Dank für Ihre Aufmerksamkeit © msg systems ag, Mai Gordon Breuer IT Consultant // Software Engineer Telefon: Facebook: Blog: msg systems ag Robert-Bürkle-Straße Ismaning/München Telefon: Fax: eure