mco_trans_set_cleanup_period
通过冲突的数量来控制 MVCC 事务管理器的行为。
此功能有助于优化 MVCC 性能。它通过控制 MVCC 事务管理器在冲突数量方面的行为来实现(当冲突数量较少时,MVCC 的效果最佳,而冲突数量较多时效果较差)。该功能设置两个相关参数:max_conflicts_percent
(最大冲突百分比)和 disable_period
(禁用周期)。在提交期间,如果检测到冲突,MVCC 事务管理器会增加其内部的“冲突计数器”(n_conflicts
),否则会增加其内部成功的“提交计数器”(n_commits
)。此外,如果满足以下条件:
n_conflicts/(n_conflicts + n_commits)*100 > max_conflicts_percent
在参数 disable_period
中指定数量内的后续读写事务将以“独占模式”执行(一次仅执行一个读写事务)。请注意,这不会影响只读事务——它们与读写事务以及其他只读事务并行执行。
默认情况下,此优化功能处于关闭状态,或者换句话说,max_conflicts_percent = 100%
。
void mco_trans_optimistic_threshold(
/*IN*/ mco_db_h db,
/*IN*/ int max_conflicts_percent,
/*IN*/ int disable_period
);
参数
db
mco_db_h
由 mco_db_connect()
建立的数据库句柄。
max_conflicts_percent
int
在切换到“独占模式”之前要处理的冲突数量。
disable_period
int
在达到冲突阈值后以“独占模式”执行的读写事务数量。
返回
没有返回值。
示例
/* 应用程序代码片段 */
const char * dbname = "SimpleDb";
int main(int argc, char* argv[])
{
mco_db_h db;
MCO_RET rc;
mco_device_t dev;
mco_db_params_t db_params;
...
rc = mco_db_open_dev( dbname, simple_get_dictionary(), &dev, 1, &db_params );
if ( MCO_S_OK != rc )
{
rc = mco_db_connect( dbname, &db );
...
mco_trans_optimistic_threshold( db, 10, 10);
...
}
...
}
文件
头文件:
mco.h
源文件:
mursiw.c
库:
libmcotexcl.a
头文件:
mco.h
源文件:
mursiw.c
库:
libmcotmursiw.a
- 头文件:
mco.h
- 源文件:
mvcc.c
- 库:
libmcotmvcc.a