缓冲区大小初始化参数

在企业级地理数据库的 SERVER_CONFIG 系统表中有三个传输缓冲区初始化参数:MINBUFSIZE、MAXBUFSIZE 和 MINBUFOBJECTS。

数据通过数据流在 ArcSDE 服务(应用程序服务器)和客户端应用程序之间进行传输。数据流是用于表或图层查询的通信机制。将存储器结构(传输缓冲区)传递给基础网络堆栈之前,数据流先将存储器结构作为一个容器。

创建 ArcSDE 数据流时,该进程将传输缓冲区共同分配给客户端和服务器。传输缓冲区可以累积矢量数据记录,然后将这些记录批量(而非以单个记录形式)发送到整个网络,从而减少输入/输出 (I/O) 并提高性能。

这些记录收集在 ArcSDE 应用程序服务器进程的传输缓冲区内,并会在应用程序查询数据库时被发送到客户端传输缓冲区。或者,这些记录会收集在客户端的传输缓冲区内,并在应用程序将数据写入数据库时被发送到 ArcSDE 服务器进程的传输缓冲区。

传输缓冲区参数

这些参数共同构成了可防止应客户端的请求而传输缓冲区的阈值下限。检索查询请求的数据时,达到 MINBUFOBJECTS 或 MINBUFSIZE 后才会发送缓冲区内的批量数据。一旦所有已提取的数据都被置于缓冲区,即使尚未超出这些阈值,这些数据也将被传输到客户端。首先检查 MINBUFOBJECTS。

MINBUFOBJECTS 是传输缓冲区被发送到整个数据流之前存储在传输缓冲区内的最小记录数。默认值是 512 条记录。该值也是最小值。Esri 测试已证明,将该参数增大到 512 以上不会带来任何性能优势。

MINBUFSIZE 不应大于 MAXBUFSIZE 的二分之一。因为将 MINBUFSIZE 设置得过高可能会延长传输缓冲区前客户端的等待时间。如果 MAXBUFSIZE 设为 64 千字节、MINBUFSIZE 设为 56 千字节,那么客户端需要等到达到 56 千字节阈值时,才会传输缓冲区发送。最小值为 4,096 字节。

MAXBUFSIZE 参数表示分配到各传输缓冲区的内存总量。达到 MAXBUFSIZE 后,传输缓冲区将停止累积记录,然后等待将这些记录发送到客户端的请求。增加缓冲区的大小之前,请验证服务器上的物理内存是否充足,否则可能因为页面调度过多而降低性能。例如,默认值分配给每个缓冲区 64 千字节。如果有 100 个用户建立了连接,则每个 gsrvr 进程都将包含一个共消耗 6.4 MB 系统内存的缓冲区。如果 MAXBUFSIZE 加倍,则会消耗 12.8 MB 内存。

数据传输次序

为响应查询而提取数据时,ArcGIS 将检查分批数据中的行数是否满足 MINBUFOBJECTS 参数的要求。如果查询仍在处理之中,当达到 MINBUFOBJECTS 阈值(存在所需行数)并且客户端在等待数据时,数据被发送。如果未满足 MINBUFOBJECTS 的要求且数据仍在检索中,那么 ArcSDE 将检查数据的大小,以查明是否达到了 MINBUFSIZE。如果也未达到,则将继续填充缓冲区。

缓冲区开始填充

达到 MINBUFSIZE 时,如果客户端正在等待,则数据将发送给客户端。

MINBUFFSIZE 阈值已达到

如果客户端未等待且数据仍处在检索中,则将继续填充缓冲区,从而超出 MINBUFSIZE。

如果没有客户端等待,则将继续加载缓冲区

在所有被请求的数据都置于缓冲区、有客户端在等待数据或达到 MAXBUFSIZE 之前,缓冲区仍会继续填充。达到 MAXBUFSIZE 后,将停止加载缓冲区。

客户端请求数据
MAXBUFSIZE 已达到
9/15/2013