ADO Client Side Cursor (OLEDB Client Cursor Engine) - Max. RAM Verbrauch?
-
Wenn man bei ADO Client Side Cursor verwendet kommt ja anscheinend die sog. OLEDB Client Cursor Engine zum Einsatz.
Soweit so gut.
Ich nehme mal an (d.h. ich hoffe) dass die Daten ab einer bestimmten Grösse in ein Temp-File geschrieben werden, damit man auch riesige Result-Sets bearbeiten kann.Kann man dabei irgendwie angeben wie gross der verwendete RAM Puffer pro Result-Set maximal werden darf? Bzw. weiss jemand wie das per-Default ist?
Ich hab' da nämlich ein Server-Programm, das verwendet derzeit Server Side Read-Only Fwd.-Only Cursor. Die werden aber nicht sofort komplett gelesen, sondern nur so schnell wie der übers Inet verbundene Client lesen kann. Bei einigen Statements führt das dazu, dass diverse Locks (z.T. sogar Table-Locks) recht lange gehalten werden -- was dann wieder die Anwendungen ausbremst mit denen die Daten editiert werden.
Also möchte ich wenns geht auf Client Cursor umstellen. Das ganze muss aber mit vielen gleichzeitigen Client-Verbindungen (50+) und z.T. relativ grossen Result-Sets (100MB+) klarkommen. Der Server-Prozess ist 32 Bit, was sich auch nicht einfach ändern lässt. Und 50 * 100MB + 32 Bit Prozess = Problem.
Wenn ich angeben könnte max. 1 MB RAM pro Result-Set, und der Rest wandert automatisch auf die Disk, dann wäre das Problem gegessen. Bzw. wenn es per Default schon ein "passendes" Limit gibt auch gut, dann müsste ich gar nix machen.
Was ich auf jeden Fall vermeiden will, ist dass der Server irgendwann unter Vollast (=bei uns typischerweise Freitag/Samstag zwischen 20:00 und 02:00) zusammenbricht.
Daher die Frage: habt ihr weitere Informationen zu dem Thema?
Vielleicht suche ich auch nur nach den falschen Begriffen, aber ich hab' bisher noch keine Seite zum Thema OLEDB Client Cursor Engine gefunden wo genauer auf das Thema Speicherverbrauch/RAM-Puffer/Temp-Files eingegangen wird.