GBASE南大通用数据库清理无效连接
如果要连接池定期清理连接池中无效的连接,那么就要设置 POOL_MANAGER=1。清理无效连接功能不仅定期清理连接池中无效的连接,还定 期检测 GBase 8a 各节点的状态。如果 GBase 8a 有节点恢复可用,GBase 8a ODBC 连接池将会缓存连接到该节点的 ODBC 连接。同时通过设置 POOL_TEST_INVALID_CONN_PERIOD 的值可以设置清理无效连接的周期。该周期默 认值为 20 秒。如下所示:
"DRIVER=GBase 8a ODBC 8.3 Driver;UID=gbase;PWD=gbase20110531;"
"SERVER={192.168.111.96;192.168.5.212;192.168.7.174;192.168.7.17 3};"
"GCLUSTER_ID=gcluster; POOL_MAX_ACTIVE_SIZE=80;POOL_MAX_IDLE=60;"
" POOL_MANAGER=1;POOL_TEST_INVALID_CONN_PERIOD=30;"
GBASE南大通用数据库维持空闲连接数
如果要使连接池中的空闲连接数维持在一范围内,那么可以通过设置 POOL_KEEP_IDLE=1 打开连接池的空闲连接数维持功能,并设置 POOL_MIN_IDLE 的值来实现。POOL_MIN_IDLE 的值小于 POOL_MAX_IDLE 的值。这样当连接池发现 空闲连接数小于 POOL_MIN_IDLE 的值时就会创建新的空闲连接,以满足当前空 闲连接数大于等于 POOL_MIN_IDLE 的值。打开维持空闲连接数功能必须同时设 置 POOL_MANAGER=1。如下所示:
"DRIVER=GBase 8a ODBC 8.3 Driver;UID=gbase;PWD=gbase20110531;"
"SERVER={192.168.111.96;192.168.5.212;192.168.7.174;192.168.7.17 3};"
"GCLUSTER_ID=gcluster; POOL_MAX_ACTIVE_SIZE=80;POOL_MAX_IDLE=60;"
" POOL_MANAGER=1;POOL_TEST_INVALID_CONN_PERIOD=30;"
" POOL_KEEP_IDLE=1; POOL_MIN_IDLE=30;"
GBASE南大通用数据库清理过期池
用户可以给 GBase 8a ODBC 连接池中的连接设置有效期,并且当连接池发 现有连接过期时,会将该连接释放掉。这种功能可以通过设置 POOL_CLEAR_OVERDUE,POOL_USED_LIFE 和 POOL_IDLE_LIFE 来打开。如果 POOL_USED_LIFE 的值为 0,那么已借出的连接不会过期,POOL_USED_LIFE 默认 值为 0;如果 POOL_IDLE_LIFE 的值为 0,那么空闲连接不会过期,POOL_IDLE_LIFE 默认值为 0。打开清理过期连接功能必须同时设置 POOL_MANAGER=1 如下所示:
"DRIVER=GBase 8a ODBC 8.3 Driver;UID=gbase;PWD=gbase20110531;"
"SERVER={192.168.111.96;192.168.5.212;192.168.7.174;192.168.7.17 3};"
"GCLUSTER_ID=gcluster; POOL_MAX_ACTIVE_SIZE=80;POOL_MAX_IDLE=60;"
" POOL_MANAGER=1;POOL_TEST_INVALID_CONN_PERIOD=30;"
" POOL_CLEAR_OVERDUE=1; POOL_USED_LIFE=360000; POOL_IDLE_LIFE=36000;"
GBASE南大通用数据库释放连接池
释放连接池需要按照如下方式调研释放连接池的接口。
rc = SQLDriverConnect(hdbc, NULL, connStr, SQL_NTS,NULL, 0, NULL, 0);
if (!isSuc(rc))
{
getError(SQL_HANDLE_DBC, hdbc);
return;
}
SQLSetConnectAttr(hdbc, SQL_ATTR_GBASE_POOL_FREE, SQL_FREE_GBASE_POOL, NULL);
SQLDisconnect(hdbc);
在归还从连接池借出的连接前,先设置该连接的属性 SQL_ATTR_GBASE_POOL_FREE 的值为 SQL_FREE_GBASE_POOL,然后调用 SQLDisconnect 归还连接。这样 ODBC 在归还连接的同时会释放掉该连接所在的 连接池。