Ich kenne SQL Server Indexed Views (oder Oracle Materialized Views), wir verwenden sie in unseren OLAP-Anwendungen. Sie haben das wirklich coole Feature, einen Ausführungsplan an sich zu reißen und ihn in die indizierte Sicht umzuordnen, ohne den bestehenden Code ändern zu müssen.Indexierte Ansichten in OLTPs?
IE. Angenommen, ich hatte einen SPROC, der eine wirklich teure Verbindung war.
SELECT [Einige Spalten]
FROM Tabelle1 INNER JOIN Tabelle2 [Details]
INNER JOIN Table3 [STRAUSS MEHR JOINS] ...
Wenn ich eine indizierte Sicht verfasst, die ein gehaltener ähnliche Ergebnismenge dann wird der Query Optimizer sehr wahrscheinlich die SPROC an meine indizierte Sicht im Gegensatz zu den Basistabellen senden und ich bekomme eine große Leistungssteigerung.
Jetzt sagen, ich wollte indizierte Sichten in einem OLTP verwenden !? Ich meine die meisten OLTPs (wie diese Seite) sind relativ lese schwer, wenn sie teure Joins haben, dann könnten wir sie um eine Tonne beschleunigen und möglicherweise die Sperrkonkurrenz reduzieren (http://www.codinghorror.com/blog/archives/001166.html). Noch besser ist es, wenn Sie keinen Code ändern müssen, sondern nur die indizierte Sicht erstellen.
Das bedeutet aber auch die Datenbank größer wird, da wir eine Kopie dieser Daten in der indizierten Sicht halten müssen ...
Hat jemand jemals indizierte Sichten verwendet, um Streit oder Fehler in einem OLTP zu lösen? Wieso habe ich das noch nie gesehen?
Wurden diese materialisierten Ansichten im OLTP erstellt oder wurden sie anderweitig gespeichert? Wenn sie im OLTP erstellt wurden, hat sich dies auf die Größe und Leistung der Datenbank ausgewirkt. Waren irgendwelche dieser OLTPs unter hoher Last ** bevor ** die materialisierten Ansichten niedergeschrieben wurden? – Tyler
Sie waren im OLTP. Vor allem, weil alles auf einem DBLink über das Netzwerk geschoben wurde, war noch schlimmer als der Treffer auf dem OLTP. Die Verwendung wurde hässlich und deshalb haben wir sie gebaut. Es wurde viel besser, nachdem sie vorhanden waren. –