学习背景:最近遇到了fastDB瓶颈的问题,经过仔细的研究fastDB的锁机制和内存机制,暂时记录如下。
fastdb的锁:fastdb是内存数据库,锁针对的是整个库的锁,所以在频繁写操作时会拖低系统的效率,这也是无奈之举。下面的分析是基于beginTransaction(事务分析的)
在使用的时候打开数据库的权限中有几种方式:1。dbConcurrentUpdate //同时更新方式 2.dbConcurrentRead同时读方式。3dbAllAccess普通方式 4.dbReadOnly只读方式。
在使用锁的时候会将传入的锁类型和打开数据库的权限结合确定锁的范围。
当dbConcurrentUpdate方式打开数据库时比较特殊:
当使用独占锁时:线程的ctx->isMutator = true (写标示)和ctx->mutatorCSLocked = true(临界区锁)
当使用共享锁时:ctx->mutatorCSLocked = true(临界区写锁)
当使用提交锁时:同下面使用提交锁的情况。
当以其他方式打开数据库(包括1和2结合在一起,或者3单独)(accessType!=dbConcurrentUpdate )
当使用独占锁和提交锁时&#x