![]() |
AW: Performance-Problem mit Subselects
@Delphi.Narium:
Die Vorgehensweise ist bei mir ähnlich. Allerdings ist unser DWH in die Jahre gekommen und inzwischen ziemliches Stückwerk. Ich habe das auch nicht erstellt. Aber ich darf das DWH in ein paar Monaten komplett neu aufbauen. Veranschlagte Zeit 1 bis 2 Jahre. Mein Chef meinte nur, dass ich dann bitte auch alles normalisieren soll, damit das endlich was brauchbares wird. :-D Zitat:
|
AW: Performance-Problem mit Subselects
Schau mal, ob deine SubSelects Locks erzeugen + diese ev. eskalieren.
Schau mal, ob "with (nolock)" etwas ändert. |
AW: Performance-Problem mit Subselects
Zitat:
Im Lock-Protokoll (sp_lock) taucht in der Ressource ein "encryption scan" auf, wenn beide Subselects aktiv sind. Wenn nur eins davon aktiv ist, sieht alles normal aus. Die Datenbank ist aber gar nicht verschlüsselt! Da muss ich mich jetzt wohl mal etwas weiter einsteigen. Oder kennt hier schon jemnd dieses Phänomen? |
AW: Performance-Problem mit Subselects
Wir hatten ein ähnliches Problem nach dem Umstieg auf MS SQL Server 2019. Einige Abfragen mit Sub-Selects waren plötzlich deutlich langsamer, als auf dem alten SQL-Server 2012.
Wir haben dann den Kompatibilitätsgrad der Datenbank auf 110 (SQL-Server 2012) herunter gesetzt und siehe da - die Abfragen flitzen wieder wie früher. Mit jeder höheren Version des Kompatibilitätsgrads werden die Abfragen immer langsamer. Eine langfristige Lösung haben wir aber noch nicht; müssen wohl alle Sub-Selects mal umbauen… |
AW: Performance-Problem mit Subselects
Das ist gut zu wissen. Ich bin mit dem Problem noch auf SQL Server 2008. Im Laufe des Jahres soll die DB nach Möglichkeit noch auf 2014 oder 2019 umziehen.
|
AW: Performance-Problem mit Subselects
Bis dann am Besten die Subselects umbauen
|
AW: Performance-Problem mit Subselects
Zitat:
|
AW: Performance-Problem mit Subselects
Zitat:
Aber vielleicht stecken auch da Infos für dich: ![]() ![]() ![]() |
AW: Performance-Problem mit Subselects
Zitat:
Die locks bzw. dieser spezielle Locktyp dient wohl primär für TDE, aber eben nicht nur ![]() Also hier im Fall relativ harmlos, außer, der Optimizer verhaut sich und setzt sie ein, ohne dass es Not tut. Ein Downgrade der Compatibility als Gegenmaßnahme würde ja dazu führen, dass dieses und alle anderen neuen Features nicht mehr zur Verfügung stehen, die Holzhammermethode. Dann lieber Optimizer Hints, die scheint es auch unter MSSQL Server zu geben, als Query Hints (u.a.) ![]() Damit kann man sicher gezielt und effizient einzelne Queries tunen, ohne dass man die komplette Abfrage neu schreibt. ![]() Umschreiben ist sicher die bessere Alternative, aber kostet auch mehr Feinarbeit/Zeit. Dazu sei mal noch die CTE genannt, die gerade bei wiederkehrender Nutzung gleicher Datenbestände sehr gut helfen kann. Beides, Query Hints und CTE sind sicher auch abhängig von der SQL Server Version unterschiedlich mächtig oder verfügbar. Das habe ich nicht im Detail nachgeschaut. 2008 ist natürlich schon recht betagt, plus Downgrade ist man fast schon im vorigen Jahrtausend. GgF wäre hier zu bedenken, ob solche Features in Express Versionen verfügbar sind, falls ihr sowas auch nutzt. |
AW: Performance-Problem mit Subselects
Danke jobo.
Der 2008 soll ja abgelöst werden, kann aber noch dauern. Umgeschrieben ist das SQL-Statement schon. Läuft stabil und mit erheblich besserer Performance. Die Erläuterungen für das Encryption scan sind interessant. Bei mir werden es da wohl die Sort Spills sein. Die Optimizer-Hints schaue ich mir auf jeden Fall in Ruhe an. Danke für den Link. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz