`

关于单机数据库ACID的理解

 
阅读更多
一、在不使用MVCC情况下,隔离性、锁之间的关系:
隔离级别
并行级别
锁实现
Seriallizable
读读并行
表级锁
RR
读读并行
读加共享锁,写加独占锁
RC
读写并行、读读并行
读不加锁,写加独占锁
RU
写读并行、读写并行、读读并行
读不加锁,写不加锁

二、Oracle适用MVCC模式后:
1、Oracle没有RR隔离级别,只有serializable和RC级别:其serializable为假串行,自带解决不可重复读特性,但可能存在幻读问题;RC级别可能存在幻读问题,可以通过将数据记录加载到临时对象中解决。
2、Serializable级别中的应用测试:

 

    用户B的事务因为指定了serializable隔离级别,所以虽然在查询费用明细表之前,用户A提交了对费用明细表的更改,但是因为用户A提交的更改是在用户B的事务开始之后才提交的,所以这个更改对用户B的事务不可见。也就是说,用户B的事务开始之后,其它事务提交的更改都不会再影响事务内的查询结果,这样感觉上用户A的事务好像是在用户B的事务结束之后才执行的似的。这本来是非常好的一个特性,极大地提高了并行性,但是也会造成问题。
3、RC模式下解决“不可重复读”和“幻读”的方法
    首先,无论是“不可重现的读取(nonrepeatable read)”还是“幻读(phantom read)”,都是因为程序反复读取数据产生的。所以首先需要做的是,在一个事务里确保只读取数据一次。最好用C#而不是存储过程实现业务逻辑,这样很容易做到只读取一次,然后把结果存放到IList或IDictionary里。比较难办的是需要更新数据的情况。
 
三、悲观锁和乐观锁
悲观锁:依赖数据库隔离级别或for update实现锁
乐观锁:通过版本号自己控制,例如通过版本号方式甚至可以在读未提交情况下,实现写写并行
 
 
  • 大小: 14.8 KB
分享到:
评论

相关推荐

    windows关于qt的数据库操作封装类以及用例,c++代码

    SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的功能特点有: 1. ACID事务 2. 零配置 – 无需安装和管理配置 3.储存在单一磁盘文件中的一个完整的数据库 4....

    数据库的ACID特性术语详解

    主要介绍了数据库的ACID特性术语详解,ACID就是:原子性(Atomicity )、一致性( Consistency )、隔离性( Isolation)和持久性(Durabilily),本文分别解释了它们,需要的朋友可以参考下

    MySQL数据库:事务的概述、ACID.pptx

    理解 —— 事务的属性ACID; 事务概述 在MySQL环境中,事务由作为一个单独单元的一个或多个SQL语句组成。这个单元中的每个SQL语句是互相依赖的,而且单元作为一个整体是不可分割的。如果单元中的一个语句不能完成,...

    TiDB数据库--部署单机集群

    它支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议,具有数据强一致的高可用特性,是一个不仅适合 OLTP 场景还适合 OLAP 场景的混合数据库。下面是对有关资料的整理还有一些扩展内容以链接的方式...

    数据库原理题库.docx

    事务和并发控制: 这些问题关注事务的概念、特性和 ACID 属性,以及如何实现并发控制来保证数据库的一致性和隔离性。 索引和性能优化: 这些问题涵盖数据库索引的作用、类型和设计原则,以及如何优化查询性能和提升...

    adodb510数据库抽象库

    ADODB的是一个PHP数据库抽象库,目前还有...很多的知名网站如ACID, Zikula/PostNuke,Xaraya, phpWiki, Mambo, PHP GACL, TikiWiki, eGroupWare and phpLens都使用了ADODB抽象层来操作数据库,足月看出ADODB非常受欢迎。

    数据库系统中事务的ACID原则.pdf

    数据库系统中事务的 数据库系统中事务的ACID原则 原则 事务的原⼦性、⼀致性、独⽴性及持久性 事务的原⼦性是指⼀个事务要么全部执⾏,要么不执⾏.也就是说⼀个事务不可能只执⾏了⼀半就停⽌了.⽐如你从取款机取钱,这...

    ACID 7.0汉化包

    ACID 7.0汉化包ACIDACID 7.0汉化包 7.0汉化包

    数据库中间件mycat

    • 支持事务、ACID、可以替代Mysql的加强版数据库 • 一个可以视为“Mysql”集群的企业级数据库,用来替代昂贵的Oracle集群 • 一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL Server • 结合传统数据库和...

    sqlite数据库源代码

    SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。 本文件中包含了sqlite数据库的全部源代码。

    数据库系统概论自己版.xmind

    Atomicity (原子性 要么一起done要么一起滚), Consistence (一致性), Isolation (隔离性), Durability (持久性) / ACID Commit work:提交当前事务,也就是将该事务所做的更新在数据库中持久保存。在事务被...

    ravendb:ACID文档数据库

    RavenDB-一个ACID NoSQL文档数据库该存储库包含文档数据库的源代码。 使用RavenDB数据库,您可以设置NoSQL数据体系结构或将NoSQL层添加到当前的关系数据库中。支持平台视窗Linux 码头工人苹果系统树莓派获取许可证并...

    LocalDB:具有ACID属性的面向.NET的NoSQL数据库

    带有ACID属性的面向.NET的数据库 LocalDB将是具有ACID属性作为.NET应用程序一部分运行的超快速NoSQL(基于文档)数据库。 最适合: .NET应用程序(Web应用程序,服务或控制台/ Windows应用程序) 一实例应用 特征...

    数据库原理测试题.docx

    数据库原理测试题是一种用于检验个体对于数据库基本概念、理论和操作的理解程度的考试工具。这些测试题旨在评估考生在数据库设计、查询语言、事务处理、性能优化等方面的知识和技能。这些测试题可以涵盖各种难度级别...

    毕业设计作业-基于Python的解释数据库中的ACID属性,并解释每个属性的含义及参考答案.pdf

    毕业设计作业—基于Python的解释数据库中的ACID属性,并解释每个属性的含义及参考答案.

    数据库恢复技术.doc

    这4 个特性也简称为ACID 特性。 原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。 隔离性:一个事务的...

    SQLite3数据库查看器

    SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。...

    ACID_pro4 ACID中文版本

    ACID_pro4 ACID中文版本

    Android中SQLite数据库查看工具

    SQLite是一个进程内的库,...SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。 SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。 SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。

    Acid

    Acid

Global site tag (gtag.js) - Google Analytics