Параметры инициализации размера буфера
Существует три параметра инициализации транспортного буфера в системной таблице 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 данные отправляются клиенту, если клиент ожидает их получения.
![]() |
Если клиент не ожидает получения данных, и процесс извлечения данных продолжается, буфер будет заполняться и дальше после превышения значения MINBUFSIZE.
![]() |
Буфер будет заполняться до помещения в него всех запрошенных данных, появления ожидающего данные клиента или достижения значения MAXBUFSIZE. После достижения значения MAXBUFSIZE загрузка буфера прекращается.
![]() |
![]() |