Поделиться через


Значение расположения курсора

Каждый курсор использует временные ресурсы для хранения данных. Эти ресурсы могут быть памятью, файлом разбиения на страницы диска, временными файлами диска или даже временным хранилищем в базе данных. Курсор называется клиентским курсором , когда эти ресурсы находятся на клиентском компьютере. Курсор называется серверным курсором, когда эти ресурсы расположены на сервере.

курсоры Client-Side

В ADO вызовите курсор на стороне клиента с помощью adUseClient CursorLocationEnum. При использовании некулевого клиентского курсора сервер отправляет весь результирующий набор по сети на клиентский компьютер. Клиентский компьютер предоставляет и управляет временными ресурсами, необходимыми для курсора и результирующего набора. Клиентское приложение может просматривать весь результирующий набор, чтобы определить, какие строки требуется.

Статические и клиентские курсоры, использующие набор ключей, могут значительно нагрузить вашу рабочую станцию, если они содержат слишком много строк. Хотя все библиотеки курсоров способны создавать курсоры с тысячами строк, приложения, предназначенные для получения таких больших наборов строк, могут работать плохо. Есть исключения, конечно. Для некоторых приложений большой клиентский курсор может быть совершенно подходящим, и производительность может не быть проблемой.

Одним из очевидных преимуществ клиентского курсора является быстрый ответ. После скачивания результирующих наборов на клиентский компьютер просмотр строк выполняется очень быстро. Как правило, приложение более масштабируемо с клиентскими курсорами, так как требования к ресурсам курсора размещаются на каждом отдельном клиенте, а не на сервере.

курсоры Server-Side

В ADO вызовите курсор на стороне сервера с помощью adUseServer CursorLocationEnum. С помощью серверного курсора сервер управляет результирующий набор с помощью ресурсов, предоставляемых серверным компьютером. Курсор на стороне сервера возвращает только запрошенные данные по сети. Этот тип курсора иногда может обеспечить лучшую производительность, чем курсор на стороне клиента, особенно в ситуациях, когда чрезмерный сетевой трафик является проблемой.

Однако важно отметить, что курсор на стороне сервера, по крайней мере временно, использует драгоценные ресурсы сервера для каждого активного клиента. Необходимо планировать соответствующим образом, чтобы обеспечить возможность управления всеми серверными курсорами, запрашиваемыми активными клиентами. Кроме того, курсор на стороне сервера может быть медленным, так как он предоставляет доступ только к одной строке— нет доступного пакетного курсора.

Курсоры на стороне сервера полезны при вставке, обновлении или удалении записей. С помощью серверных курсоров можно использовать несколько активных запросов внутри одного и того же подключения.