DBMS-트랜잭션
트랜잭션은 작업 그룹으로 정의 할 수 있습니다. 단일 작업은 더 이상 나눌 수없는 최소 처리 단위입니다.
간단한 거래의 예를 들어 보겠습니다. 은행 직원이 A의 계정에서 B의 계정으로 500 루피를 이체한다고 가정합니다. 이 매우 간단하고 작은 트랜잭션에는 몇 가지 저수준 작업이 포함됩니다.
A’s Account
Open_Account(A)
Old_Balance = A.balance
New_Balance = Old_Balance - 500
A.balance = New_Balance
Close_Account(A)
B’s Account
Open_Account(B)
Old_Balance = B.balance
New_Balance = Old_Balance + 500
B.balance = New_Balance
Close_Account(B)
ACID 속성
트랜잭션은 프로그램의 매우 작은 단위이며 여러 하위 수준 작업을 포함 할 수 있습니다. 데이터베이스 시스템의 트랜잭션은Atomicity, C끈기, I솔 레이션 및 D정확성, 완전성 및 데이터 무결성을 보장하기 위해 일반적으로 ACID 속성으로 알려진 urability.
Atomicity−이 속성은 트랜잭션이 원자 단위로 처리되어야 함, 즉 모든 작업이 실행되거나 실행되지 않음을 나타냅니다. 데이터베이스에는 트랜잭션이 부분적으로 완료된 상태가 없어야합니다. 상태는 트랜잭션 실행 전 또는 트랜잭션 실행 / 중단 / 실패 후에 정의되어야합니다.
Consistency− 데이터베이스는 트랜잭션 이후에도 일관된 상태를 유지해야합니다. 어떤 트랜잭션도 데이터베이스에있는 데이터에 부정적인 영향을주지 않아야합니다. 데이터베이스가 트랜잭션 실행 전에 일관성있는 상태에 있었다면 트랜잭션 실행 후에도 일관성을 유지해야합니다.
Durability− 데이터베이스는 시스템이 실패하거나 다시 시작 되더라도 최신 업데이트를 모두 저장할 수있을만큼 내구성이 있어야합니다. 트랜잭션이 데이터베이스의 데이터 청크를 업데이트하고 커밋하면 데이터베이스는 수정 된 데이터를 보유합니다. 트랜잭션이 커밋되었지만 데이터가 디스크에 기록되기 전에 시스템이 실패하면 시스템이 다시 작동하면 해당 데이터가 업데이트됩니다.
Isolation− 하나 이상의 트랜잭션이 동시에 병렬로 실행되는 데이터베이스 시스템에서 격리 속성은 모든 트랜잭션이 마치 시스템에서 유일한 트랜잭션 인 것처럼 수행되고 실행된다는 것을 나타냅니다. 어떤 거래도 다른 거래의 존재에 영향을 미치지 않습니다.
직렬화 가능성
다중 프로그래밍 환경에서 운영 체제에 의해 여러 트랜잭션이 실행되는 경우 한 트랜잭션의 명령이 다른 트랜잭션과 인터리브 될 가능성이 있습니다.
Schedule− 트랜잭션의 시간순 실행 순서를 스케줄이라고합니다. 일정에는 많은 트랜잭션이있을 수 있으며, 각 트랜잭션은 여러 지침 / 작업으로 구성됩니다.
Serial Schedule− 하나의 트랜잭션이 먼저 실행되는 방식으로 트랜잭션이 정렬되는 일정입니다. 첫 번째 트랜잭션이주기를 완료하면 다음 트랜잭션이 실행됩니다. 거래는 차례로 주문됩니다. 이러한 유형의 일정은 트랜잭션이 직렬 방식으로 실행되기 때문에 직렬 일정이라고합니다.
다중 트랜잭션 환경에서는 일련의 일정이 벤치 마크로 간주됩니다. 트랜잭션에서 명령의 실행 순서는 변경할 수 없지만 두 트랜잭션은 임의의 방식으로 명령을 실행할 수 있습니다. 두 트랜잭션이 서로 독립적이고 서로 다른 데이터 세그먼트에서 작동하는 경우이 실행은 아무런 해를 끼치 지 않습니다. 그러나이 두 트랜잭션이 동일한 데이터에서 작동하는 경우 결과가 다를 수 있습니다. 이 끊임없이 변화하는 결과는 데이터베이스를 일관성없는 상태로 만들 수 있습니다.
이 문제를 해결하기 위해 트랜잭션이 직렬화 가능하거나 동등 관계가있는 경우 트랜잭션 일정의 병렬 실행을 허용합니다.
등가 일정
동등성 일정은 다음 유형이 될 수 있습니다.
결과 동등성
두 스케줄이 실행 후 동일한 결과를 생성하면 결과가 동등하다고합니다. 일부 값에 대해 동일한 결과를 생성하고 다른 값 집합에 대해 다른 결과를 생성 할 수 있습니다. 이것이이 동등성이 일반적으로 중요하지 않은 이유입니다.
동등성보기
두 일정의 트랜잭션이 유사한 방식으로 유사한 작업을 수행하는 경우 두 일정은 뷰 동등성이됩니다.
예를 들면-
T가 S1의 초기 데이터를 읽으면 S2의 초기 데이터도 읽습니다.
T가 S1에서 J가 쓴 값을 읽으면 S2에서 J가 쓴 값도 읽습니다.
T가 S1의 데이터 값에 대한 최종 쓰기를 수행하면 S2의 데이터 값에 대한 최종 쓰기도 수행됩니다.
충돌 동등성
다음 속성이있는 경우 두 개의 일정이 충돌합니다.
- 둘 다 별도의 거래에 속합니다.
- 둘 다 동일한 데이터 항목에 액세스합니다.
- 그들 중 적어도 하나는 "쓰기"작업입니다.
충돌하는 작업이있는 여러 트랜잭션이있는 두 개의 스케줄은 다음과 같은 경우에만 충돌이라고합니다.
- 두 일정 모두 동일한 트랜잭션 집합을 포함합니다.
- 충돌하는 작업 쌍의 순서는 두 일정 모두에서 유지됩니다.
Note−보기 등가 일정은보기를 직렬화 할 수 있으며 충돌 등가 일정은 충돌을 직렬화 할 수 있습니다. 모든 충돌 직렬화 가능 스케줄도보기 직렬화 가능합니다.
거래 상태
데이터베이스의 트랜잭션은 다음 상태 중 하나 일 수 있습니다.
Active−이 상태에서 트랜잭션이 실행되고 있습니다. 이것은 모든 거래의 초기 상태입니다.
Partially Committed − 트랜잭션이 최종 작업을 실행할 때 부분적으로 커밋 된 상태라고합니다.
Failed− 데이터베이스 복구 시스템의 검사 중 하나라도 실패하면 트랜잭션은 실패한 상태라고합니다. 실패한 트랜잭션은 더 이상 진행할 수 없습니다.
Aborted− 검사 중 하나라도 실패하고 트랜잭션이 실패한 상태에 도달하면 복구 관리자는 데이터베이스의 모든 쓰기 작업을 롤백하여 데이터베이스를 트랜잭션 실행 이전의 원래 상태로 되돌립니다. 이 상태의 트랜잭션을 중단됨이라고합니다. 데이터베이스 복구 모듈은 트랜잭션이 중단 된 후 두 작업 중 하나를 선택할 수 있습니다.
- 트랜잭션을 다시 시작하십시오.
- 거래 종료
Committed− 트랜잭션이 모든 작업을 성공적으로 실행하면 커밋되었다고합니다. 모든 효과는 이제 데이터베이스 시스템에 영구적으로 설정됩니다.