Udostępnij za pośrednictwem


Asynchronous Population

Microsoft SQL Server oferuje optymalizacji wydajności programu podczas wypełniania dużych opartej na zestaw kluczy lub statyczne kursory asynchronicznie.Kursory statyczne i sterowanych przez zestaw kluczy za pomocą tabel pracy wbudowane tempdb.Kursory opartej na zestaw kluczy służy tabela pracy do przechowywania ich zestaw kluczy zestawu kluczy, które identyfikują wiersze w kursor.Statyczne kursory użyć tabela Praca do przechowywania wierszy, składający się kursor.Jeśli SQL Server optymalizator kwerendy szacuje, że liczby wierszy zwracanych w kursorze opartej na zestaw kluczy lub statyczne przekroczy wartość Próg kursor sp_configure parametr, serwer uruchamia oddzielnego wątek, aby wypełnić tabela pracy.Formant natychmiast są zwracane do aplikacji, która może rozpocząć pobieranie w pierwszych wierszach kursor zamiast czekać, aż tabela całej pracy ma zostały wypełnione przed wykonaniem pierwszej pobrania.

Brak niektórych dodatkowe obciążenie związane z podczas wypełniania kursor asynchronicznie.Jest bardziej efektywne nie, aby wypełnić małych kursory asynchronicznie, więc Próg kursor sp_configure wartość nie powinna być ustawiona zbyt mała.Rezerwowanie użycie asynchronicznych zapełnianie dużej liczby kursorów.

Uwaga

SQL Server nie obsługuje generowania asynchronicznie opartej na zestaw kluczy lub statyczne kursory języka Transact-SQL.Transact-SQL cursor operations such as OPEN or FETCH are usually batched, so there is no need for the asynchronous generation of Transact-SQL cursors.SQL Server continues to support asynchronous keyset-driven or static application programming interface (API) server cursors where low latency OPEN is a concern, due to client round trips for each cursor operation.

Funkcja @@ CURSOR_ROWS raportów liczbę wierszy w kursorze.Jeśli zaznaczysz @@ CURSOR_ROWS na kursor z tabelą pracy, który jest nadal są wypełniane @@ CURSOR_ROWS zwraca wartość ujemną.Wartość bezwzględna liczby zwracana jest liczba wierszy, które mają zostać wypełnione w tabela pracy do tego czas.Na przykład jeśli @@ CURSOR_ROWS jest zaznaczone, zestaw kluczy z kursor, którego podstawę stanowi zestaw kluczy jest nadal jest pusta, ale 1,243 klucze są już zestawu kluczy, @@ CURSOR_ROWS zwraca wartość-1243.