搜索
首页数据库mysql教程Oracle数据并发性和一致性

Oracle数据库的一致性是通过多版本一致性模型和多种类型的锁和事务来实现的。Oracle的多版本一致性读,使得Oracle查询具有读一致

1.Oracle数据库的一致性是通过多版本一致性模型和多种类型的锁和事务来实现的。

2.Oracle的多版本一致性读,使得Oracle查询具有读一致性查询和非阻塞读两个特性。

3.语句级的一致性指查询返回的结果与发起查询的时间点保持一致并且当时已提交的数据。例如:当SQL语句在SCN=1000发起,则在提交读的隔离级别下,返回的结果和SCN=1000保持一致;在序列化或者只读的事务中,事务中所有的查询都与事务开始时间点保持一致;在闪回查询中,查询结果和语句中指定的时间点保持一致。

4.事务界别的一致性:

即Oracle可以保证事务中的所有语句查询的结果和事务开始时间点保持一致。

串行化事务中的查询可以看到事务自身引起的修改。

事务级别的一致性可以保证可重复读,但是不保证幻影读。

5.读一致性和undo段

Oracle的读一致性和非阻塞读主要通过undo来实现,在undo段中存放事务所做的修改的旧值,这样某事务进行过程中,可以对事务外查询提供旧值的查询,即读一致性。

6.读一致性和事务表

每个数据块的块头都有一个ITL(interested transaction list),当Oracle需要对数据块进行修改时,会利用ITL来判断事务是否提交。(Oracle默认的隔离级别为提交读,不会读取未提交事务的数据)

ITL里的内容描述了哪些事务在数据块中有行锁和哪些行被已提交或未提交事务做了改变。

ITL指向UNDO段里的事务表,事务表里记录了数据库发生的所有改变的时序。

从某种意义上来说,ITL里记录了最近数据块里所有的被改变行记录的历史信息,INITRANS参数决定了数据块里保留的事务历史。

7.锁机制

一般来说,多用户的数据库使用数据锁来解决与数据并发性、一致性和完整性相关的问题。锁主要是阻止访问相同资源的事务之间发生破坏性的影响。

8.ANSI/ISO的事务隔离级别

其中,,脏读是指读取到其他事务未提交的数据;不可重复读是指第二次读时,比第一次读数据被删除,第一次查询结果有改变;幻影读是指第二次查询时,查询结果比第一次更多,但是第一次查询的结果集没有发生改变。

9.read commited隔离级别

oracle为每一条查询语句提供一致性的查询结果,不需要人工干预。

例如update语句中的where字句查询,也是可以提供一致性查询结果的,只是该隐式查询并不能看到自己的修改,只能看到隐式查询之前发生的修改。

如果在select列表中含有函数(如count(),sum(),自定义函数),则 函数中的每一条SQL都将在语句级实现一致性,而不是在父select语句级保持一致性,函数内的每一条SQL语句在执行时,”一致性读快照“都已经建立。也就是说,select列表里的函数的执行过程中,会读取其他事务提交的改变。例如,某select列表含有10个函数,均对一张表进行操作,事务总共执行时间为1小时,在这一小时中若有其他用户对该表进行了修改并提交,则后面的函数(例如最后一个函数)则将读到其他用户修改后的数据。

10.提交读事务中的写冲突

当一个事务A尝试去修改某未提交事务B所修改的数据块,则发生了写冲突,A事务会等待B事务结束(回滚或提交)释放相应锁后,再继续执行。这里有两种情况:第一,当B事务回滚了,则A事务继续处理之前被锁定的行数据,就像B事务从来没有发生过一样;第二,当B事务提交了,则A事务继续执行其之前想要处理的行记录。

11.串行化隔离级别

串行化隔离级别下,事务只能看到事务开始时间的已提交改变和事务自己看到的改变。串行化事务仿佛没有其他事务在对数据库进行修改。

串行化事务使用的场景:第一,事务较短且处理的记录数较少;第二,俩事务同时处理相同记录的几率较低;第三,运行时间相对较长的事务主要都是只读事务。

串行化事务只会处理事务开始时,已经提交的数据,当串行化事务处理其他未提交事务修改的数据时,会报错。“ORA-08177: Cannot serialize access for this transaction“

12.只读隔离级别

只读隔离级别类似于串行化隔离级别,只是只读隔离级别不会修改数据(SYS用户除外);

只读事务主要用于要求报表内容数据必须和开始报表时间保持一致的场景。

本文永久更新链接地址

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
MySQL:初学者的基本技能MySQL:初学者的基本技能Apr 18, 2025 am 12:24 AM

MySQL适合初学者学习数据库技能。1.安装MySQL服务器和客户端工具。2.理解基本SQL查询,如SELECT。3.掌握数据操作:创建表、插入、更新、删除数据。4.学习高级技巧:子查询和窗口函数。5.调试和优化:检查语法、使用索引、避免SELECT*,并使用LIMIT。

MySQL:结构化数据和关系数据库MySQL:结构化数据和关系数据库Apr 18, 2025 am 12:22 AM

MySQL通过表结构和SQL查询高效管理结构化数据,并通过外键实现表间关系。1.创建表时定义数据格式和类型。2.使用外键建立表间关系。3.通过索引和查询优化提高性能。4.定期备份和监控数据库确保数据安全和性能优化。

MySQL:解释的关键功能和功能MySQL:解释的关键功能和功能Apr 18, 2025 am 12:17 AM

MySQL是一个开源的关系型数据库管理系统,广泛应用于Web开发。它的关键特性包括:1.支持多种存储引擎,如InnoDB和MyISAM,适用于不同场景;2.提供主从复制功能,利于负载均衡和数据备份;3.通过查询优化和索引使用提高查询效率。

SQL的目的:与MySQL数据库进行交互SQL的目的:与MySQL数据库进行交互Apr 18, 2025 am 12:12 AM

SQL用于与MySQL数据库交互,实现数据的增、删、改、查及数据库设计。1)SQL通过SELECT、INSERT、UPDATE、DELETE语句进行数据操作;2)使用CREATE、ALTER、DROP语句进行数据库设计和管理;3)复杂查询和数据分析通过SQL实现,提升业务决策效率。

初学者的MySQL:开始数据库管理初学者的MySQL:开始数据库管理Apr 18, 2025 am 12:10 AM

MySQL的基本操作包括创建数据库、表格,及使用SQL进行数据的CRUD操作。1.创建数据库:CREATEDATABASEmy_first_db;2.创建表格:CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY,titleVARCHAR(100)NOTNULL,authorVARCHAR(100)NOTNULL,published_yearINT);3.插入数据:INSERTINTObooks(title,author,published_year)VA

MySQL的角色:Web应用程序中的数据库MySQL的角色:Web应用程序中的数据库Apr 17, 2025 am 12:23 AM

MySQL在Web应用中的主要作用是存储和管理数据。1.MySQL高效处理用户信息、产品目录和交易记录等数据。2.通过SQL查询,开发者能从数据库提取信息生成动态内容。3.MySQL基于客户端-服务器模型工作,确保查询速度可接受。

mysql:构建您的第一个数据库mysql:构建您的第一个数据库Apr 17, 2025 am 12:22 AM

构建MySQL数据库的步骤包括:1.创建数据库和表,2.插入数据,3.进行查询。首先,使用CREATEDATABASE和CREATETABLE语句创建数据库和表,然后用INSERTINTO语句插入数据,最后用SELECT语句查询数据。

MySQL:一种对数据存储的初学者友好方法MySQL:一种对数据存储的初学者友好方法Apr 17, 2025 am 12:21 AM

MySQL适合初学者,因为它易用且功能强大。1.MySQL是关系型数据库,使用SQL进行CRUD操作。2.安装简单,需配置root用户密码。3.使用INSERT、UPDATE、DELETE、SELECT进行数据操作。4.复杂查询可使用ORDERBY、WHERE和JOIN。5.调试需检查语法,使用EXPLAIN分析查询。6.优化建议包括使用索引、选择合适数据类型和良好编程习惯。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前By尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具