[ 면접 ] ACID에 대해서 설명해주세요.

신범철·2022년 9월 22일
0

면접스터디

목록 보기
2/5

Q : ACID에 대해서 설명해주세요.

A : ACID는 데이터베이스에서 트랜잭션이 안전하게 수행되는 것을 보장하기 위해 필요한 4가지 성질입니다. ACID에는 Atomicity, Consistency, Isolation, Durability가 있습니다. Atomicity는 하나의 트랜잭션 연산은 모두 성공해야하거나 실패해야하는 특성입니다. 은행을 예시로 들어 설명하자면 A가 B에서 송금을 하는 경우가 있습니다. 이는 A계좌에서 돈 출금, B계좌에 입금으로 나눌수 있습니다. 이때 출금만 되고 입금이 되지 않는다면 돈은 사라지게 됩니다. 이런 경우를 방지하기위해 Atomcity가 지켜져야 합니다.
Consistency는 트랜잭션이 실행을 기준으로 전, 후에 일관된 데이터베이스 상태를 보존해야하는 특성입니다. 즉 트랜잭션의 전, 후의 제약이나 규칙이 다를 수 없습니다.
Isolation은 트랜잭션 실행 중 생성하는 연산의 중간 결과를 다른 트랜잭션이 접근 불가하도록 하는 특성입니다. 격리 정도에 따라 Isolation Level로 분류할 수 있습니다.
마지막으로 Durablility는 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장하는 특성입니다. 이는 나중에 문제가 생겼을 경우에 해당 기록을 보고 회복하기 위함입니다.

Q : ACID를 위반하는 경우 어떻게 대처해야 할까요?

A : ACID를 위반하면 절때 안되지만 만일 위반했을 경우 기록된 ACID중 어떤 성질을 위반했는지 찾아야합니다. 저는 Durability를 위반하지 않았다면 트랜잭션을 조회하여 이전으로 회복해야한다고 생각합니다. 만일 Durability를 위반한 경우는 수동으로 기록으로 찍어주어야 할 거 같습니다.

Q : 데드락에 대해 설명하시오.

A : 데이터베이스는 트랜잭션의 동시성을 제어하기 위해 Lock이라는 개념을 사용합니다. 이를 통해 데이터의 무결성을 지켜주지만 데드락이 발생할 수 있습니다. 데드락은 여러개의 트랜잭션들이 Lock으로 인해 트랜잭션을 실행하지 못하고 무한정 대기하는 것을 말합니다.

Q : 그러면, 데드락이 안 생기게 하는 방법을 설명하시오.

A : 가장 쉬운 방법은 격리 레벨을 낮추는 것입니다. 격리 레벨을 낮추게 된다면 데드락은 발생하지 않지만 동시성 문제가 발생할 수 있습니다. 그럼으로 트랜잭션을 자주 커밋하는 것이 가장 옳다고 생각합니다.

profile
https://github.com/beombu

0개의 댓글