Programing

ACID 및 데이터베이스 트랜잭션은 어떻게 작동합니까?

lottogame 2020. 6. 10. 23:02
반응형

ACID 및 데이터베이스 트랜잭션은 어떻게 작동합니까?


ACID와 데이터베이스 트랜잭션의 관계는 무엇입니까?

ACID는 데이터베이스 트랜잭션을 제공합니까, 아니면 같은 것입니까?

누군가이 주제를 밝힐 수 있을까요?


ACID 는 데이터베이스를 수정할 때 적용 할 속성 집합입니다.

  • 원 자성
  • 일관성
  • 격리
  • 내구성

트랜잭션은 일부 ACID 속성을 달성하는 데 사용되는 일련의 관련 변경 사항입니다. 트랜잭션은 ACID 속성을 달성하기위한 도구입니다.

원 자성이란 모든 트랜잭션이 발생하거나 전혀 수행되지 않음을 보증 할 수 있음을 의미합니다. 하나의 단일 장치로 또는 전체적으로 또는 복잡한 형태로 복잡한 작업을 수행 할 수 있으며 충돌, 정전, 오류 또는 기타 다른 작업을 수행하면 관련 변경 중 일부만 발생한 상태가 될 수 없습니다.

일관성은 데이터의 일관성을 보장한다는 것을 의미합니다. 관련 데이터에 대한 제약 조건 중 어느 것도 위반되지 않습니다.

격리는 한 트랜잭션이 아직 완료되지 않은 다른 트랜잭션에서 데이터를 읽을 수 없음을 의미합니다. 두 개의 트랜잭션이 동시에 실행되는 경우 각 트랜잭션은 순차적으로 실행중인 것처럼 세상을보고 다른 트랜잭션이 작성한 데이터를 읽어야하는 경우 다른 트랜잭션이 완료 될 때까지 기다려야합니다.

내구성은 트랜잭션이 완료되면 모든 변경 사항이 내구성있는 매체 (예 : 하드 디스크)에 기록되었으며 트랜잭션이 완료된 사실도 기록됨을 의미합니다.

따라서 트랜잭션은 이러한 속성을 보장하는 메커니즘입니다. 그것들은 전체적으로 하나의 작업 그룹이 원자적일 수 있고 일관된 결과를 생성하며 다른 작업과 분리되며 지속적으로 기록 될 수 있도록 관련 작업을 함께 그룹화하는 방법입니다.


ACID는 모든 트랜잭션 처리 엔진의 바람직한 속성입니다.

DBMS는 (아주 좋을 경우) 일반적으로 이러한 속성을 전부는 아니지만 아주 많이 노출시키는 특정 종류의 트랜잭션 처리 엔진입니다.

그러나 이러한 속성을 노출시킬 수있는 다른 엔진이 있습니다. 예전에는 "TP 모니터"라고 불렸던 일종의 소프트웨어 (현재는 웹 서버와 동등한 기능)입니다.

이러한 TP 모니터는 DBMS 이외의 리소스 (예 : 프린터)에 액세스 할 수 있으며 사용자에 대한 ACID를 계속 보장합니다. 프린터가 트랜잭션에 관여 할 때 ACID가 무엇을 의미하는지에 대한 예는 다음과 같습니다.

  • 원 자성 : 전체 문서가 인쇄되거나 전혀 인쇄되지 않음
  • 일관성 : 트랜잭션 끝에서 용지 공급이 페이지 상단에 위치합니다.
  • 격리 : 인쇄하는 동안 두 문서가 섞이지 않습니다
  • 내구성 : 프린터는 빈 카트리지로 "인쇄"되지 않았 음을 보증 할 수 있습니다.

좀 더 설명하기 쉽게 프린터 예제를 수정했습니다.

내용이 2 페이지 인 1 개의 문서가 프린터로 전송되었습니다.

거래 -프린터로 전송 된 문서

  • 원 자성 -프린터가 문서 2 페이지를 인쇄하거나 인쇄하지 않음
  • 일관성 -프린터가 반 페이지를 인쇄하고 페이지가 멈 춥니 다. 프린터가 다시 시작되고 모든 내용으로 2 페이지를 인쇄합니다
  • 격리 -진행중인 인쇄물이 너무 많으면 프린터가 문서의 올바른 내용을 인쇄합니다
  • 내구성 -인쇄하는 동안 전원 차단이 발생했습니다. 프린터는 다시 오류없이 문서를 인쇄

이것이 누군가 ACID 개념을 익히는 데 도움이되기를 바랍니다.


ACID 속성은 데이터베이스 이론의 매우 오래되고 중요한 개념입니다. 이 주제에 대해 많은 게시물을 찾을 수 있지만 RDBMS의 매우 중요한 주제이기 때문에 이에 대한 답변을 시작하고 싶습니다.

데이터베이스 시스템은 모든 트랜잭션에 특정 특성이있는 다양한 유형의 트랜잭션을 처리합니다. 이 특성을 ACID 속성이라고합니다. ACID 속성은 모든 작업을 수행하기 위해 모든 데이터베이스 트랜잭션에 대한 권한을 부여받습니다.

원 자성 : 모두 또는 아무것도 저 지르지 않습니다.

일관성 : 트랜잭션의 모든 규칙 및 제약 조건을 확인하는 관점에서 일관된 기록을 만듭니다.

격리 : 두 트랜잭션이 서로를 인식하지 못하도록합니다.

내구성 : 커밋 된 데이터를 영원히 저장합니다. 이 기사에서 가져온 참조 :


ACID와 데이터베이스 트랜잭션의 관계는 무엇입니까?

관계형 데이터베이스에서는 모든 SQL 문이 트랜잭션 범위에서 실행되어야합니다.

트랜잭션 경계를 명시 적으로 정의하지 않으면 데이터베이스는 모든 개별 명령문을 둘러싼 암시 적 트랜잭션을 사용하게됩니다.

내재적 트랜잭션은 명령문이 실행되기 전에 시작되고 명령문이 실행 된 후 종료 (커밋 또는 롤백)됩니다. 암시 적 트랜잭션 모드는 일반적으로 자동 커밋으로 알려져 있습니다.

이 기사 에서 설명하는 것처럼 트랜잭션은 포함 된 모든 작업이 성공한 경우에만 성공하는 읽기 / 쓰기 작업의 모음입니다.

원 자성

본질적으로 트랜잭션은 네 가지 속성 (일반적으로 ACID라고 함)으로 구성됩니다.

  • 원 자성
  • 일관성
  • 격리
  • 내구성

ACID는 데이터베이스 트랜잭션을 제공합니까, 아니면 같은 것입니까?

관계형 데이터베이스 시스템의 경우 이는 SQL 표준이 트랜잭션이 ACID 보증을 제공하도록 지정하기 때문에 적용됩니다.

원 자성

Atomicity takes individual operations and turns them into an all-or-nothing unit of work, succeeding if and only if all contained operations succeed.

A transaction might encapsulate a state change (unless it is a read-only one). A transaction must always leave the system in a consistent state, no matter how many concurrent transactions are interleaved at any given time.

Consistency

Consistency means that constraints are enforced for every committed transaction. That implies that all Keys, Data types, Checks and Trigger are successful and no constraint violation is triggered.

Isolation

Transactions require concurrency control mechanisms, and they guarantee correctness even when being interleaved. Isolation brings us the benefit of hiding uncommitted state changes from the outside world, as failing transactions shouldn’t ever corrupt the state of the system. Isolation is achieved through concurrency control using pessimistic or optimistic locking mechanisms.

Durability

A successful transaction must permanently change the state of a system, and before ending it, the state changes are recorded in a persisted transaction log. If our system is suddenly affected by a system crash or a power outage, then all unfinished committed transactions may be replayed.

enter image description here

For more details about Durability and the Redo Log, check out this article.


To quote Wikipedia:

ACID (atomicity, consistency, isolation, durability) is a set of properties that guarantee database transactions are processed reliably.

A DBMS that supports transactions will strive to support all of these properties - any commercial DBMS (as well as several open-source DBMSs) provide full ACID 'support' - although it's often possible (for example, with varying isolation levels in MSSQL) to lessen the ACIDness - thus losing the guarantee of fully transactional behaviour.


[Gray] introduced the ACD properties for a transaction in 1981. In 1983 [Haerder] added the Isolation property. In my opinion, the ACD properties would be have a more useful set of properties to discuss. One interpretation of Atomicity (that the transaction should be atomic as seen from any client any time) would actually imply the isolation property. The "isolation" property is useful when the transaction is not isolated; when the isolation property is relaxed. In ANSI SQL speak: if the isolation level is weaker then SERIALIZABLE. But when the isolation level is SERIALIZABLE, the isolation property is not really of interest.

I have written more about this in a blog post: "ACID Does Not Make Sense".

http://blog.franslundberg.com/2013/12/acid-does-not-make-sense.html

[Gray] 트랜잭션 개념, Jim Gray, 1981. http://research.microsoft.com/en-us/um/people/gray/papers/theTransactionConcept.pdf

[Haerder] 트랜잭션 지향 데이터베이스 복구 원칙, Haerder and Reuter, 1983. http://www.stanford.edu/class/cs340v/papers/recovery.pdf


트랜잭션은 최소 처리 단위로 간주되는 작업 모음으로 정의 될 수 있습니다. 각 최소 처리 장치는 더 이상 나눌 수 없습니다.

모든 트랜잭션에는 일반적으로 ACID 속성으로 알려진 4 개의 속성이 포함되어야합니다. 즉, ACID는 모든 거래의 속성 그룹입니다.

  • 원 자성 :
  • 일관성
  • 격리
  • 내구성

참고 URL : https://stackoverflow.com/questions/3740280/how-do-acid-and-database-transactions-work

반응형