描述
检索有关SQLite性能的运行时状态信息,并可选择重置各种高水位标记。
C / C ++语法
int sqlite3_status( int op, int *pCurrent, int *pHighwater, int resetFlag ); |
PB语法
FUNCTION sqlite3_status ( _ BYVAL op AS LONG, _ BYREF pCurrent AS LONG, _ BYREF pHighwater AS LONG, _ BYVAL resetFlag AS LONG _ ) AS LONG |
参数
op
[in]特定satus参数的整数代码
pCurrent
[out]指向接收当前参数值的LONG变量的指针。
resetFlag
[out]指向接收参数最高记录值的LONG变量的指针。
resetFlag
[in]TRUE或FALSE。如果为true,则在此接口调用返回后,计数器将重置为零。
返回值
成功时返回SQLITE_OK,失败时返回非零错误代码。
备注
此函数用于检索关于SQLite性能的运行时状态信息,并可选择重置各种高水位标记。第一个参数是要测量的特定参数的整数代码。识别的整数代码的形式为SQLITE_STATUS _参数的当前值返回到pCurrent.记录的最高值在pHighwater中返回。如果复位标志为真,则写入pHighwater之后,最高记录值将被重置。一些参数不记录最高值。对于这些参数,没有任何内容写入pHighwater,并且复位标志被忽略。其他参数仅记录高水位标记而不是当前值。对于这些后一个参数,没有任何内容写入pCurrent.
此函数是线程安全的,但不是原子的。当其他线程运行相同或不同的SQLite接口时,可以调用此函数。然而,pCurrent和pHighwater中返回的值反映了SQLite在不同时间点的状态,并且有可能另一个线程可能会在编写pCurrent和pHighwater的时间之间更改参数。
C ++实现代码
/*
** Query status information.
**
** This implementation assumes that reading or writing an aligned
** 32-bit integer is an atomic operation. If that assumption is not true,
** then this function is not threadsafe.
*/
SQLITE_API int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetFlag){
wsdStatInit;
if( op<0 || op>=ArraySize(wsdStat.nowValue) ){
return SQLITE_MISUSE_BKPT;
}
*pCurrent = wsdStat.nowValue[op];
*pHighwater = wsdStat.mxValue[op];
if( resetFlag ){
wsdStat.mxValue[op] = wsdStat.nowValue[op];
}
return SQLITE_OK;
}