Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





 

Курсор
Курсором называется именованный указатель на блок данных (набор строк).
Обычно курсоры определяются с помощью оператора SELECT:
EXEC SQL BEGIN DECLARE SECTION;
char szLastName[] = «White»:

 

В данном запросе определяется курсор author_cursor, указывающий на набор полей au_fname, в которых поле au_lname содержит значение White. Такой курсор называется статическим. Динамический курсор получает значения параметров в ходе выполнения запроса. Транзакция может открывать несколько курсоров как последовательно, так и одновременно. Так как курсоры занимают значительное количество памяти, то открытие большого их числа может сильно замедлить работу системы. Один из способов снизить накладные расходы — использовать курсоры разного типа, особенно в тех случаях, когда полнофункциональный курсор не требуется. Всего существует четыре типа курсора:
1. Последовательный (forward only cursor).
2. Статический (static cursor).
3. Ключевой (keyset cursor).
4. Динамический (dynamic cursor).
Последовательный курсор позволяет приложениям передвигаться по полученному набору строк только вперед. Изменения, произведенные другими транзакциями, будут видны только в том случае, если затронутые ими строки не были запрошены ранее, то есть находятся впереди.
Статический курсор обрабатывает слепок базы данных, сделанный на момент открытия данного экземпляра курсора. Изменения, сделанные таким курсором, являются видимыми для самого курсора. Изменения, сделанные другими транзакциями, являются невидимыми.
Ключевой курсор при открытии для каждой строки базы данных сохраняет значение первичного ключа. Когда приложение устанавливает курсор на некоторую строку, СУБД по ключу считывает текущее значение этой строки. Если строка базы данных, к которой обращается данный курсор, была удалена, а текущая транзакция ввела в нее какие-либо данные, то строка будет создана вновь по значению ключа и в нее будут занесены измененные данные. Данный курсор видит лишь сохраненные обновления и удаления.
Динамический курсор является полнофункциональным курсором. Любые изменения данных являются видимыми для данного курсора. Если уровень изоляции транзакции не допускает «грязное чтение», то курсор может видеть только сохраненные изменения.
Курсор может располагаться как на сервере, так и на стороне клиентского приложения.
Серверный курсор используется в том случае, если база данных имеет большой размер и пересылать ее целиком на клиентскую систему нецелесообразно. Скорость работы клиентского приложения при этом несколько снижается.
Клиентский курсор обеспечивает передачу базы данных клиенту от сервера целиком. Такой режим работы подходит, если база данных имеет небольшой размер.

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



   
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru