Параметры инициализации размера буфера

Существует три параметра инициализации транспортного буфера в системной таблице SERVER_CONFIG многопользовательской базы геоданных: MINBUFSIZE, MAXBUFSIZE и MINBUFOBJECTS.

Данные передаются между службой ArcSDE (сервер приложений) и клиентским приложением через поток. Поток выступает в качестве механизма связи для запроса таблицы или слоя. Потоки используют структуру памяти (транспортный буфер) в качестве контейнера перед передачей структуры в базовый сетевой стек.

При создании потока ArcSDE процесс выделяет транспортные буферы для клиента и сервера. Транспортные буферы уменьшают объем операций ввода/вывода и повышают производительность, скапливая записи векторных данных и отправляя их по сети в группах, а не в отдельных записях.

Записи, собираемые в транспортном буфере процесса сервера приложений ArcSDE, отправляются в транспортный буфер клиента, когда приложение запрашивает базу данных. Также записи могут собираться в транспортный буфер клиента и отправляться в транспортный буфер серверного процесса ArcSDE во время записи приложением данных в базу.

Параметры транспортного буфера

Эти параметры устанавливают нижние ограничения, предотвращающие передачу буферов в ответ на запрос клиента. При извлечении запрошенных посредством запроса данных пакет данных в буфере не отправляется, пока не будет получен параметр MINBUFOBJECTS или MINBUFSIZE. После помещения всех доставленных данных в буфер данные передаются на клиент, даже если ограничения не нарушены. Вначале изучается параметр MINBUFOBJECTS.

Параметр MINBUFOBJECTS определяет минимальное число записей, хранящихся в буфере передачи до отправки по потоку. Значение по умолчанию равно 512 записям. Также это значение является минимальным. Испытания Esri показали, что увеличение этого параметра до значения выше 512 не приводит к повышению производительности.

Значение параметра MINBUFSIZE не должно превышать половины значения параметра MAXBUFSIZE. Слишком большое значение MINBUFSIZE увеличивает время ожидания клиента до передачи буфера. Если параметр MAXBUFSIZE имеет значение 64 килобайт, а параметр MINBUFSIZE имеет значение 56 килобайт, клиенту придется ждать достижения границы в 56 килобайт до получения транспортного буфера. Минимальное значение равняется 4096 байт.

Параметр MAXBUFSIZE отражает общий объем памяти, выделенный для каждого транспортного буфера. Транспортный буфер прекращает накапливать записи после достижения значения MAXBUFSIZE и ожидает запроса на отправку записей клиенту. Перед увеличением размера буфера необходимо убедиться в наличие на сервере достаточного объема физической памяти. В противном случае производительность может упасть из-за чрезмерно большого количества страниц. Например, по умолчанию на буфер выделяется 64 килобайт. При подключении 100 пользователей каждый процесс gsrvr будет содержать один буфер, и потребление системной памяти составит 6,4 МБ. При удвоении параметра MAXBUFSIZE будет потребляться 12,8 МБ системной памяти.

Последовательность передачи данных

При доставке данных по запросу ArcGIS проверяет соответствие количества строк в пакете данных и значения параметра MINBUFOBJECTS. Если запрос еще обрабатывается, достигается ограничение MINBUFOBJECTS (присутствует требуемое количество строк), и клиент ожидает данные, происходит отправка данных. Если ограничение MINBUFOBJECTS не достигается, и извлечение данных продолжается, ArcSDE проверяет размер данных, чтобы проверить достижение ограничения MINBUFSIZE. Если ограничение еще не достигнуто, буфер продолжает заполняться.

Буфер начинает заполняться

По достижении ограничения MINBUFSIZE данные отправляются клиенту, если клиент ожидает их получения.

Достигается пороговое значение MINBUFFSIZE

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

Буфер будет загружаться и дальше при отсутствии ожидающих клиентов

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

Клиент запрашивает данные
Достигается значение MAXBUFSIZE

Связанные темы

9/11/2013