Вход/Регистрация
Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil
вернуться

Востриков С М

Шрифт:

cmd.Properties("Use Bookmarks") = True

Set rs = cmd.Execute

Dim i As Long

For i = 0 To rs.RecordCount

'нумерация с единицы

rs.AbsolutePosition = CLng(Rnd * rs.RecordCount) + 1

'...

Next i

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

Поэтому набор строк OLE DB-провайдера для InterBase всегда использует собственный механизм контроля над объемом расходуемой памяти для хранения результирующего множества. Он заключается в удержании в указанном объеме памяти только наиболее часто используемых строк и вытеснении остальных строк во временный файл. При этом создание файла откладывается до последнего момента. Такой способ хранения данных выгодно отличает IBProvider от других компонентов доступа, которые основываются на поддержке со стороны ОС и использовании ее файла подкачки.

По умолчанию IBProvider удерживает в памяти 32 строки, независимо от их размера. Часто этого может оказаться недостаточно. Поэтому спецификация OLE DB определяет стандартное свойство набора строк "Memory Usage", которое позволяет отрегулировать верхнюю границу используемой памяти.

0

IBProvider удерживает в памяти 32 ряда. По умолчанию.

1...99

Использовать процент от доступной памяти ОС (как физической гак и файла подкачки)

100...

Использование указанного размера памяти в килобайтах.

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

Единственным ограничением, которое присутствует в текущей версии IBProvider (1.6.2), является невозможность редактирования выбранного множества строк, т. е. работы с так называемыми "живыми" запросами, которые часто используются в приложениях, создаваемых с помощью средств разработки компании Borland.

Практическое использование IBProvider

Работа с BLOB-полями

IBProvider предоставляет поддержку двум типам BLOB-полей: содержащих текст (SUB_TYPE TEXT) и бинарные данные. При этом доступ к BLOB может быть организован как к данным в памяти, так и к объекту-хранилищу. В любом случае провайдер не хранит сами данные BLOB-поля, а каждый раз загружает их по требованию клиента.

ADODB. Чтение BLOB:

Dim cn As New ADODB.Connection

cn.Open "file name=d:\database\employee.ibp"

cn.BeginTrans

Dim cmd As New ADODB.Command

Dim rs As ADODB.Recordset

cmd.ActiveConnection = cn

'JOB_REQUIREMENT - текстовое BLOB-поле

cmd.CommandTexc = "select nob_requirement from job"

Set rs = cmd.Execute

'доступ к BLOB как к данным в памяти

While Not rs.EOF

'печатаем размер BLOB-поля. обращение к ActualSize

'не производит загрузки самих данных

Debug.Print "size:" & CStr(rs(0).ActualSize)

If IsNull(rs(0)) Then

Debug.Print "NULL"

Else

Debug.Print rs(0)

End If

rs.MoveNext

Wend

Debug.Print "******************"

rs.MoveFirst

'чтение порциями по 40 байт

Dim seg As Variant, str As String

Const seg_size = 40

While Not rs.EOF

'пропускаем пустые BLOB-поля

If (Not IsNulKrs(0))) Then

str = ""

Do

seg = rs(0).GetChunk(seg_size)

'когда данных нет - GetChunk возвращает NULL

If IsNull(seg) Then Exit Do

str = str + seg

Debug.Print "get chunk: " & Len(seg) & " bytes"

Loop While True

Debug.Print ">" & CStr(rs(0).ActualSize) & " - " & Len(str)

Debug.Print ">" & str

End If

rs.MoveNext

Wend

cn.CommitTrans

ADODB. Запись BLOB-поля:

Dim cn As New ADODB.Connection

cn.Open "file name=d:\database\employee.ibp"

  • Читать дальше
  • 1
  • ...
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: