Appfabric Cache ist 4x langsamer als SQL Server 2008?

8

Ich führe einen Test durch, in dem ich die Abrufzeit s / w appfabric und SQL Server 2008 vergleiche und appFabric 4x mal langsamer als SQL Server vorginge.

Ich habe eine SQL Server 2008-Installation, die nur eine Tabelle mit 4 Spalten enthält (alle nvarchar ). Die Tabelle hat 6000 Zeilen. Ich füge dieselbe Zeile (als CLR-serialisierbares Objekt) in den AppFabric-Cache ein. Ich führe eine Schleife aus, um Daten x-mal zu holen.

Hier ist der Code

%Vor%

Und hier ist die Schleife, um Daten aus dem Cache zu holen

%Vor%

Ich habe genau dieselbe Logik, um Daten von SQL Server abzurufen. Es erstellt ein

%Vor%

Hier sind die Ergebnisse ...

%Vor%

Fehle ich hier etwas? Warum ist es so langsam?

    
user1707312 28.09.2012, 20:51
quelle

3 Antworten

2

Der Unterschied ist der Netzwerk-Overhead. In Ihrem SQL-Beispiel springen Sie einmal über das Netzwerk und wählen N Zeilen. In Ihrem AppFabric-Beispiel können Sie das Netzwerk PER RECORD überspringen, anstatt es in großen Mengen zu verwenden. Das ist der Unterschied. Um dies zu beweisen, speichern Sie Ihre Datensätze vorübergehend in AppFabric als Liste und erhalten Sie nur die Liste einmal oder verwenden Sie die AppFabric Bulk-API, um sie alle in einer Anfrage auszuwählen - das sollte einen großen Teil des Unterschieds ausmachen.

    
Haney 25.05.2013 19:36
quelle
1

Dies kann durch die eingebaute Serialisierung von .Net verursacht werden.

.Net-Serialisierung verwendet Reflexion, die wiederum sehr schlechte Leistung hat. Ich würde empfehlen, die Verwendung von individuell geschriebenem Serialisierungscode zu prüfen.

    
redcalx 17.12.2012 17:44
quelle
0

Ich denke, Ihr Test ist voreingenommen und Ihre Ergebnisse sind nicht optimal.

Über verteilten Cache

  • Lokaler Cache: Sie haben die Funktion lokalen Cache deaktiviert. Cache-Objekte werden immer vom Server abgerufen. Netzwerktransfers und Deserialisierung haben ihre Kosten.
  • BulkGet: BulkGet verbessert die Leistung bei Verwendung mit kleinen Objekten, z. B. beim Abrufen von vielen Objekte von 1 - 5 KB oder weniger in der Größe.
  • Keine Datenkomprimierung: Keine Komprimierung zwischen AppFabric- und Cache-Clients. Überprüfen Sie dies .

Informationen zu Ihrem Test

Eine weitere wichtige Sache ist, dass Sie nicht dasselbe testen: Auf der einen Seite testen Sie SELECT * und auf der anderen Seite testen Sie N x GET ITEM.

    
Cybermaxs 05.10.2012 11:12
quelle