Блочные курсоры

Многие приложения тратят значительное время на получение данных в сети. Часть этого времени фактически тратится на перенос данных по сети, и часть ее тратится на сетевые издержки, такие как вызов, сделанный драйвером для запроса строки данных. Последнее время может быть сокращено, если приложение эффективно использует блок или жир, курсоры, которые могут возвращать несколько строк за раз.

Приложение всегда имеет возможность использовать блок-курсор. В источниках данных, из которых можно получить только одну строку за раз, в драйвере необходимо имитировать курсоры блокировок. Это можно сделать, выполнив несколько однострочных выборок. Хотя это вряд ли позволит повысить производительность, она открывает возможности для приложений. После этого такие приложения будут увеличивать производительность, так как DBMS реализует блочные курсоры в собственном коде, а драйверы, связанные с этими DBMS, предоставляют их.

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

Чтобы выполнить операции, работающие с одной строкой при получении нескольких строк, приложение должно сначала указать, какая строка является текущей строкой. Текущая строка требуется для вызовов SQLGetData и позиционированных инструкций обновления и удаления. Когда курсор блока сначала возвращает набор строк, текущая строка является первой строкой набора строк. Чтобы изменить текущую строку, приложение вызывает SQLSetPos или SQLBulkOperations (для обновления по закладке). На следующем рисунке показана связь результирующий набор, набор строк, текущая строка, курсор набора строк и курсор блока. Дополнительные сведения см. в разделе "Использование блочных курсоров", далее в этом разделе, а также инструкции по размещению и удалению инструкций и обновлению данных с помощью SQLSetPos.

Получение следующих, предыдущих, первых и последних наборов строк

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

Этот раздел содержит следующие подразделы.