单纯加锁协议解决并发控制问题会有读写冲突和写写冲突,对并发事务性能影响较大。因此GBase 8s数据库还使用了多版本并发控制(MVCC),MVCC可以避免读写冲突;GBase 8s数据库可以设置事务和会话的隔离级别来限制脏读,隔离级别分为Dirty Read(脏读)、Commited Read(只读已提交的数据)、Cursor Stability(游标稳定性)、Repeatable Read(可重复读)、Last Committed Read(读取最后提交的数据)等五种级别,其中,Commited Read(只读已提交的数据)和Last Committed Read(读取最后提交的数据)隔离级别能确保所有的记录都是提交到数据库的,因而能避免读取到脏数据,能确保所有读取到的记录都是已提交的,当一个进程读完记录后,其它进程就可以修改。在读取数据前,数据库服务器尝试在记录上加共享锁。加锁前,需要先检查是否可以对对象加共享锁;如果可以加锁,则要保证要加锁的记录没有其他进程正在更新;当继续正在更新时,记录上有排他锁,此时我们不能对记录加共享锁。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




