MVCC事务管理器可以并发运行读写事务。由于latches存在,当并发的事务更新同一个对象时,容易出现事务冲突,MVCC事务管理器会让一个事务完成更新操作,而其它的事务被中止,并返回应用程序MCO_E_CONFLICT。应用程序可以判断返回的错误码来解决冲突:
点击(此处)折叠或打开
- do {
- mco_trans_start( db,
- MCO_READ_WRITE,
- MCO_TRANS_FOREGROUND,
- &t);
-
- ...<update database>...
-
- rc = mco_trans_commit(t);
- } while ( rc == MCO_E_CONFLICT );
点击(此处)折叠或打开
- void mco_trans_optimistic_threshold( mco_db_h db,
- int max_conflicts_percent,
- int disable_period)