启用了 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 输出仅显示至少等待一次的资源。
图: 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 池数以提高性能。