GridView + ObjectDataSource Problem - ebenso schlechte Leistung für kleine und große Ergebnis-sets

StackOverflow https://stackoverflow.com/questions/818091

Frage

Ich wurde gerufen, um die Arbeit auf eine ältere .NETTO-legacy-web-app vor kurzem.Die performance hatte zuletzt gefallenen ganz sub-par, da die Menge an Daten in das system hatte sich vervierfacht.War alles in Ordnung für die vergangenen 2 Jahre.

Es war mit ein .xsd-Datei zu sprechen, um eine gespeicherte Prozedur, verengt die Ergebnisse ausreichend (obwohl kein paging) und deren Einspeisung in ein GridView über eine ObjectDataSource.

Der Teil, den ich nicht bekommen kann meinen Kopf herum, ist es einnehmen, wurde eine etwa 7 Sekunden, um zu laden für 1 Ergebnis, 140 oder 1200.Es dauerte einen Bruchteil einer Sekunde für 0 result Fällen.(GridView ist der Umgang mit der Paginierung)

Verwendung von SQL profiler konnten wir sehen, dass die Abfrage wurde unter 6,9 Sekunden.Das ausführen der gleichen Abfrage mit dem gleichen params nahm 100ms in SQL Management Studio.Ich geänderten Parametern herum, um sicherzustellen, es war nicht nur eine zwischengespeicherte Ergebnis.Die lange Wartezeit ist zuverlässig reproduzierbar.

Ich bin mir bewusst, dass die Implementierung von paging müssten die hier gemacht werden, aber für jetzt bin ich gerade im Nachhinein versucht, eine Erklärung zu finden warum hinter der Seite durchführt ebenso schlecht für kleine und große sets...

(Die GridView s 'einfachen' Darstellung ist gut für Ihre Bedürfnisse - Sie brauchen keine Steuern, HTML-Code)

War es hilfreich?

Lösung

Wir haben das gleiche Thema:

  1. Überprüfen Sie, ob Ihre Statistik sind bis zu Datum:
    SELECT 
        ObjectName = Object_Name(ind.object_id),
        IndexName = ind.name,
        StatisticsDate = STATS_DATE(ind.object_id, ind.index_id)
    FROM SYS.INDEXES ind
    order by STATS_DATE(ind.object_id, ind.index_id) desc
  1. Drop die SQL-server-cache:
    DBCC DROPCLEANBUFFERS
    DBCC FREEPROCCACHE
  1. Wenn keiner hilft, können Sie versuchen, die Durchsetzung der SSMS query plan mit hinweisen wie "inner LOOP join" und "mit (index=...)".

Andere Tipps

Sie könnten versuchen, Blick auf den Ausführungsplan und Typ der Parameter, die gesendet werden von Ihrer Anwendung.Wenn Sie beispielsweise die Anwendung ist vorbei ein nvarchar zu vergleichen, die gegen eine varchar-Spalte, könnte es zu Problemen führen.http://weblogs.sqlteam.com/tarad/archive/2007/11/16/60408.aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top