cursor threshold (Option)

Sie können mithilfe der Option cursor threshold die Anzahl der Zeilen im Cursorset angeben, bei der Cursor-Keysets asynchron generiert werden. Wenn Cursor ein Keyset für ein Resultset generiert, schätzt der Abfrageoptimierer die Anzahl der Zeilen, die für dieses Resultset zurückgegeben werden. Wenn der Abfrageoptimierer schätzt, dass die Anzahl der zurückgegebenen Zeilen über diesem Schwellwert liegt, wird der Cursor asynchron generiert. Dadurch kann der Benutzer Zeilen aus dem Cursor abrufen, während der Cursor weiterhin aufgefüllt wird. Andernfalls wird der Cursor synchron generiert, und die Abfrage wartet so lange, bis alle Zeilen zurückgegeben wurden.

Wenn Sie cursor threshold auf -1 festlegen, werden alle Keysets synchron generiert, was für kleine Cursorsets vorteilhaft ist. Wenn Sie cursor threshold auf 0 festlegen, werden alle Cursor-Keysets asynchron generiert. Bei anderen Werten vergleicht der Abfrageoptimierer die Anzahl der erwarteten Zeilen im Cursorset und erstellt das Keyset asynchron, wenn die Anzahl der in cursor threshold festgelegten Zeilen überschritten wird. Sie sollten die Option cursor threshold nicht zu niedrig festlegen, da es besser ist, kleine Resultsets synchron zu erstellen.

HinweisHinweis

In SQL Server wird das asynchrone Generieren von keysetgesteuerten oder statischen Transact-SQL-Cursorn nicht unterstützt. Transact-SQL-Cursorvorgänge, wie z. B. OPEN oder FETCH, sind in Batches enthalten. Daher ist das asynchrone Generieren von Transact-SQL-Cursorn nicht erforderlich. In SQL Server werden weiterhin asynchrone keysetgesteuerte oder statische API-(Application Programming Interface-)Servercursor unterstützt, wobei OPEN mit geringer Latenzzeit ein Problem darstellt. Dies ist auf Clientroundtrips zurückzuführen, die für jeden Cursorvorgang ausgeführt werden.

Die Genauigkeit des Abfrageoptimierers beim Bestimmen der Anzahl der Zeilen in einem Keyset hängt davon ab, wie aktuell die Statistiken für die einzelnen Tabellen im Cursor sind.

Bei cursor threshold handelt es sich um eine erweiterte Option. Wenn Sie die Einstellung mithilfe der gespeicherten Systemprozedur sp_configure ändern, können Sie cursor threshold nur ändern, wenn show advanced options auf 1 festgelegt ist. Die Einstellung tritt sofort in Kraft (ohne Neustarten des Servers).