데이터 베이스 MySQL 튜토리얼 Oracle数据并发性和一致性

Oracle数据并发性和一致性

Jun 07, 2016 pm 03:10 PM
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으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

오라클을 열 수 없다면해야 할 일 오라클을 열 수 없다면해야 할 일 Apr 11, 2025 pm 10:06 PM

Oracle에 대한 솔루션은 개설 할 수 없습니다. 1. 데이터베이스 서비스 시작; 2. 청취자를 시작하십시오. 3. 포트 충돌을 확인하십시오. 4. 환경 변수를 올바르게 설정하십시오. 5. 방화벽이나 바이러스 백신 소프트웨어가 연결을 차단하지 않도록하십시오. 6. 서버가 닫혀 있는지 확인하십시오. 7. RMAN을 사용하여 손상된 파일을 복구하십시오. 8. TNS 서비스 이름이 올바른지 확인하십시오. 9. 네트워크 연결 확인; 10. Oracle 소프트웨어를 다시 설치하십시오.

Oracle Cursor를 닫는 문제를 해결하는 방법 Oracle Cursor를 닫는 문제를 해결하는 방법 Apr 11, 2025 pm 10:18 PM

Oracle Cursor Closure 문제를 해결하는 방법에는 다음이 포함됩니다. Close 문을 사용하여 커서를 명시 적으로 닫습니다. For Update 절에서 커서를 선언하여 범위가 종료 된 후 자동으로 닫히십시오. 연관된 PL/SQL 변수가 닫히면 자동으로 닫히도록 사용 절에서 커서를 선언하십시오. 예외 처리를 사용하여 예외 상황에서 커서가 닫혀 있는지 확인하십시오. 연결 풀을 사용하여 커서를 자동으로 닫습니다. 자동 제출을 비활성화하고 커서 닫기를 지연시킵니다.

Oracle에서 모든 데이터를 삭제하는 방법 Oracle에서 모든 데이터를 삭제하는 방법 Apr 11, 2025 pm 08:36 PM

Oracle에서 모든 데이터를 삭제하려면 다음 단계가 필요합니다. 1. 연결 설정; 2. 외국의 주요 제약을 비활성화합니다. 3. 테이블 데이터 삭제; 4. 거래 제출; 5. 외국 키 제약 조건을 활성화합니다 (선택 사항). 데이터 손실을 방지하려면 실행하기 전에 데이터베이스를 백업하십시오.

Oracle 데이터베이스를 이끄는 방법 Oracle 데이터베이스를 이끄는 방법 Apr 11, 2025 pm 08:42 PM

Oracle 데이터베이스 페이징은 rownum pseudo-columns 또는 fetch 문을 사용하여 구현합니다. Fetch 문은 지정된 첫 번째 행 수를 얻는 데 사용되며 간단한 쿼리에 적합합니다.

Oracle Loop에서 커서를 만드는 방법 Oracle Loop에서 커서를 만드는 방법 Apr 12, 2025 am 06:18 AM

Oracle에서 FOR 루프 루프는 커서를 동적으로 생성 할 수 있습니다. 단계는 다음과 같습니다. 1. 커서 유형을 정의합니다. 2. 루프를 만듭니다. 3. 커서를 동적으로 만듭니다. 4. 커서를 실행하십시오. 5. 커서를 닫습니다. 예 : 커서는 상위 10 명의 직원의 이름과 급여를 표시하기 위해주기별로 만들 수 있습니다.

Oracle 데이터베이스를 중지하는 방법 Oracle 데이터베이스를 중지하는 방법 Apr 12, 2025 am 06:12 AM

Oracle 데이터베이스를 중지하려면 다음 단계를 수행하십시오. 1. 데이터베이스에 연결하십시오. 2. 즉시 종료; 3. 셧다운은 완전히 중단됩니다.

Oracle Dynamic SQL을 만드는 방법 Oracle Dynamic SQL을 만드는 방법 Apr 12, 2025 am 06:06 AM

SQL 문은 Oracle의 동적 SQL을 사용하여 런타임 입력을 기반으로 작성 및 실행할 수 있습니다. 단계에는 다음이 포함됩니다 : 동적으로 생성 된 SQL 문을 저장할 빈 문자열 변수 준비. 즉시 실행 또는 준비 명령문을 사용하여 동적 SQL 문을 컴파일하고 실행하십시오. 바인드 변수를 사용하여 사용자 입력 또는 기타 동적 값을 동적 SQL로 전달하십시오. 동적 SQL 문을 실행하려면 즉시 실행 또는 실행을 사용하십시오.

HDFS에서 CentOS를 구성하는 데 어떤 단계가 필요합니까? HDFS에서 CentOS를 구성하는 데 어떤 단계가 필요합니까? Apr 14, 2025 pm 06:42 PM

Centos 시스템에서 Hadoop 분산 파일 시스템 (HDF)을 구축하려면 여러 단계가 필요합니다. 이 기사는 간단한 구성 안내서를 제공합니다. 1. 초기 단계에서 JDK를 설치할 준비 : 모든 노드에 JavadevelopmentKit (JDK)을 설치하면 버전이 Hadoop과 호환되어야합니다. 설치 패키지는 Oracle 공식 웹 사이트에서 다운로드 할 수 있습니다. 환경 변수 구성 : /etc /프로파일 파일 편집, Java 및 Hadoop 설정 설정 시스템에서 JDK 및 Hadoop의 설치 경로를 찾을 수 있습니다. 2. 보안 구성 : SSH 비밀번호가없는 로그인 SSH 키 : 각 노드에서 ssh-keygen 명령을 사용하십시오.

See all articles