SQL 语句高速缓存池数

启用了 SQL 语句高速缓存 (SSC) 时,数据库服务器从 SSC 池为未链接的 SQL 语句分配内存。STMT_CACHE_NUMPOOL 配置参数的缺省值是 1。随着用户数量的增加,这个 SSC 池可能会成为瓶颈。

SSC 池上长自旋的数量表示该 SSC 池是否为瓶颈。

使用 onstat -g spi 选项来监视 SSC 池上的长自旋数。onstat -g spi 命令显示系统中资源的列表,在可获取资源上的锁存器之前必须等待。在等待期间,线程自旋(或循环),尝试获取资源。onstat -g spi 输出显示为获取资源必须等待的次数(Num Waits 列)以及总循环数(Num Loops 列)。onstat -g spi 输出仅显示至少等待一次的资源。

图 1 显示 onstat -g spi 样本输出的摘录。图 1 指示对于任何 SSC 池都没有发生任何等待(Name 列没有列出任何 SSC 池)。

图: onstat -g spi 输出

Spin locks with waits:
Num Waits   Num Loops   Avg Loop/Wait    Name
34477       387761      11.25            mtcb sleeping_lock
312         10205       32.71            mtcb vproc_list_lock

如果在 SSC 池上看到数量过多的长自旋(Num Loops 列),请增加 STMT_CACHE_NUMPOOL 配置参数中的 SSC 池数以提高性能。