Initialisierungsparameter für die Puffergröße
ArcSDE bietet drei Initialisierungsparameter für Transportpuffer: MINBUFSIZE, MAXBUFSIZE und MINBUFOBJECTS.
Zwischen einem ArcSDE-Dienst (Anwendungsserver) und einer Client-Anwendung werden die Daten über einen Stream übertragen. Ein Stream dient als Kommunikationsmechanismus beim Abfragen einer Tabelle oder eines Layers. Streams verwenden eine Speicherstruktur (einen Transportpuffer) zur Aufbewahrung von Daten, bevor sie an den zugrunde liegenden Netzwerkstapel übergeben werden.
Wenn ein ArcSDE-Stream erstellt wird, teilt der ArcSDE-Prozess sowohl dem Client als auch dem Server Transportpuffer zu. Transportpuffer reduzieren die Eingabe/Ausgabe (E/A) und verbessern die Leistung, indem Datensätze für Vektordaten akkumuliert und nicht einzeln, sondern in Stapeln durch das Netzwerk gesendet werden.
Die Datensätze werden im Transportpuffer des ArcSDE-Anwendungsserverprozesses gesammelt und an den ArcSDE-Client-Transportpuffer gesendet, wenn die Anwendung die Datenbank abfragt. Alternativ dazu werden die Datensätze im Transportpuffer des Clients gesammelt und an den Transportpuffer des ArcSDE-Serverprozesses gesendet, wenn die Anwendung Daten in die Datenbank schreibt.
Die Transferpufferparameter
Diese Parameter bilden zusammen die unteren Schwellenwerte, die verhindern, dass Puffer bei einer Client-Anforderung gesendet werden. Während die von der Abfrage angeforderten Daten abgerufen werden, wird der Datenstapel im Puffer erst dann gesendet, wenn MINBUFOBJECTS oder MINBUFSIZE erreicht wurde. Wenn alle abgerufenen Daten im Puffer abgelegt wurden, werden die Daten auch dann an den Client übertragen, wenn die Schwellenwerte noch nicht überschritten wurden. MINBUFOBJECTS wird zuerst geprüft.
MINBUFOBJECTS ist die minimale Anzahl an Datensätzen, die in einem Übertragungspuffer gespeichert werden, bevor er über einen Stream gesendet wird. Der Standardwert beträgt 512 Datensätze. Dies ist auch der Minimalwert. Esri-Tests haben bewiesen, dass sich keine Leistungsverbesserungen ergeben, wenn der Parameter auf einen höheren Wert als 512 festgelegt wird.
MINBUFSIZE sollte maximal halb so groß sein wie MAXBUFSIZE. Durch einen zu hohen Wert für MINBUFSIZE kann sich die Wartezeit des Clients bis zur Pufferübertragung erhöhen. Wenn MAXBUFSIZE 64 KB und MINBUFSIZE 56 KB beträgt, wartet der Client mit der Versendung des Transportpuffers, bis der Schwellenwert von 56 KB erreicht ist. Der Minimalwert ist 4.096 Byte.
Der Parameter MAXBUFSIZE stellt die Gesamtspeichermenge dar, die jedem Transportpuffer zugewiesen wird. Der Transportpuffer sammelt keine Datensätze mehr, wenn MAXBUFSIZE erreicht ist, und wartet, bis die Anforderung die Datensätze an den Client sendet. Stellen Sie vor Erhöhung der Puffergröße sicher, dass ausreichend physischer Speicherplatz auf dem Server vorhanden ist, da andernfalls die Leistung durch übermäßige Auslagerung gemindert sein kann. Beim Standardwert werden z. B. 64 KB pro Puffer zugeteilt. Wenn 100 Benutzer verbunden sind, würde jeder gsrvr-Prozess einen Puffer enthalten, wodurch insgesamt 6,4 MB Systemspeicher belegt sein würden. Wenn MAXBUFSIZE doppelt so groß ist, werden 12,8 MB Speicher verbraucht.
Datentransfer-Reihenfolge
Wenn Daten aufgrund einer Abfrage abgerufen werden, prüft ArcSDE, ob die Anzahl der Zeilen im Datenstapel dem Parameter MINBUFOBJECTS entspricht. Wenn während der Abfrage der Schwellenwert MINBUFOBJECTS erreicht wird (die erforderliche Anzahl an Zeilen ist vorhanden) und der Client noch auf Daten wartet, werden die Daten gesendet. Wenn MINBUFOBJECTS nicht erreicht wird und die Daten immer noch abgerufen werden, prüft ArcSDE anhand der Größe der Daten, ob MINBUFSIZE erreicht wurde. Wurde der Wert nicht erreicht, wird der Puffer weiter gefüllt.
Wenn MINBUFSIZE erreicht wird, während der Client wartet, werden Daten an den Client gesendet.
Wenn der Client nicht wartet und noch Daten abgerufen werden, wird der Puffer über den Wert MINBUFSIZE hinaus gefüllt.
Der Puffer wird so lange weiter gefüllt, bis alle angeforderten Daten im Puffer abgelegt wurden, der Client auf Daten wartet oder MAXBUFSIZE erreicht wird. Nachdem MAXBUFSIZE erreicht wurde, wird die Füllung des Puffers beendet.