none
Gleiche SP <-> unterschiedliche Ausführungspläne in verschiedenen Datenbanken RRS feed

  • Frage

  • Hallo Zusammen,

    Eine Kollegin von mir, hat eine SP geschrieben, die für eine Webanwendung Daten aus zwei Telefonjournalen mit weiteren Daten anreichert und ausgibt. Die SP wurde in einer Datenbank „Entwicklung“ programmiert und benötigt (für eine Beispielselektion) lt. SSMS 1 Sekunde um die gewünschten Daten zu liefern. Überführt man diese SP von der Entwicklungsdatenbank dann in die produktive DB (auf dem gleichen Server!!), in der auch ein Teil der abgefragten Daten liegen, benötigt die gleiche SP (bei exakt dem selben Ergebnis) 1:34 Minuten und liefert einen unterschiedlichen Execution Plan und völlig andere "SET STATISTICS IO ON" Werte!

    Die Ausführungspläne, Textausgaben der IO Statistik und die SP habe ich für Interessierte in einer ZIP Datei zum Download bereitgestellt!

    Szenario:

    @@Version:

    Microsoft SQL Server 2016 (SP2-GDR) (KB4293802) - 13.0.5081.1 (X64)   Jul 20 2018 22:12:40   Copyright (c) Microsoft Corporation  Enterprise Edition: Core-based Licensing (64-bit) on Windows Server 2012 R2 Datacenter 6.3 <X64> (Build 9600: ) (Hypervisor)

    Kann mir jemand einen Tipp geben wie dies zustande kommt?

    Grüße Volker

    Mittwoch, 6. März 2019 06:55

Antworten

  • Hallo Zusammen,

    ich habe mein Problem lösen können! In der produktiven DB war der Kompatibilitätsgrad noch "historisch" auf 2012 gestellt! Nach der Umstellung läuft die SP in beiden DBs gleich!

    Grüße Volker

    Mittwoch, 6. März 2019 07:44

Alle Antworten

  • Die Ausführungspläne werden immer an Hand der verfügbaren Daten ausgewürfelt.
    Ohne eine Indexstrategie hat man da verloren.
    Dies kann sich sogar innerhalb derselben DB schon mal ändern.

    Es gab hier irgendwo eine Diskussion, dass der Plan auch z.B. vom abgefragten Wert der Where-Klausel abhängt, was jedes Mal neu bewertet wird.

    In einer Entwicklungsumgebung komme ich auch gerne ohne Indizes aus, da Tablescans über wenige Sätze da häufig effektiver sind als Indexzugriffe.

    Mittwoch, 6. März 2019 07:10
  • Hallo bfuerchau,

    das "Ding" ist, dass "nur" die SP in der Entwicklungsdatenbank bzw. der Prod-DB liegt. Dort liegen keine Daten - die SPs adressieren beide die gleichen Datentabellen in den gleichen Datenbanken!

    Grüße Volker

    PS: Auch der "Beispielaufruf" hatte natürlich die gleichen Parameter und die gleiche Ergebnismenge.


    Mittwoch, 6. März 2019 07:21
  • Hallo Zusammen,

    ich habe mein Problem lösen können! In der produktiven DB war der Kompatibilitätsgrad noch "historisch" auf 2012 gestellt! Nach der Umstellung läuft die SP in beiden DBs gleich!

    Grüße Volker

    Mittwoch, 6. März 2019 07:44