double arrow

Типы и поведение курсоров

Использование курсора

SQL-сервер способен возвращать в результате выполнения запроса сотни тысяч строк. Клиентские приложения не всегда могут справиться с такими объемами данных, т.к. для их хранения требуется много памяти. Решением этой проблемы является использование курсора.

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

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

Всегда, когда возможно, следует избегать использования курсоров и работать со стандартными командами обработки данных: Select, Insert, Update, Delete.

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

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

1. Статические курсоры

При открытии статического курсора (курсора моментального снимка) сервер выбирает все данные, соответствующие заданным критериям, и сохраняет полный результирующий набор строк в системной БД tempbd.

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

2. Динамические курсоры

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

3. Последовательные курсоры

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

4. Ключевые курсоры

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: