Does couchbase use MVCC for optimistic locking or is it only CAS based

Does Couchbase use MVCC for optimistic locking?


Couchbase optimistic locking is CAS based.
Strictly speaking MVCC is not needed for optimistic locking. MVCC is required if Readers should not get locks in a transaction. Couchbase transactions have one level of MVCC going on because our dirty mutations are staged separately, so reads can safely go ahead on the current committed version.
We do not have a multi-version MVCC which would be required for things like Snapshot Isolation where you want to read committed data as of a certain version that you are pinned to.
@graham.pople fyi in case you want to add more thoughts here.