单纯加锁协议解决并发控制问题会有读写冲突和写写冲突,对并发事务性能影响较大。因此GBase 8s数据库还使用了多版本并发控制(MVCC),MVCC可以避免读写冲突;GBase 8s数据库可以设置事务和会话的隔离级别来限制脏读,隔离级别分为Dirty Read(脏读)、Commited Read(只读已提交的数据)、Cursor Stability(游标稳定性)、Repeatable Read(可重复读)、Last Committed Read(读取最后提交的数据)等五种级别,其中,Commited Read(只读已提交的数据)和Last Committed Read(读取最后提交的数据)隔离级别能确保所有的记录都是提交到数据库的,因而能避免读取到脏数据,能确保所有读取到的记录都是已提交的,当一个进程读完记录后,其它进程就可以修改。在读取数据前,数据库服务器尝试在记录上加共享锁。加锁前,需要先检查是否可以对对象加共享锁;如果可以加锁,则要保证要加锁的记录没有其他进程正在更新;当继续正在更新时,记录上有排他锁,此时我们不能对记录加共享锁。