본문 바로가기

CS/DB

[데이터베이스] 트랜잭션 ACID Atomic 원자성 All or Nothing 트랜잭션 작업 단위를 일부분만 실행하진 않는다. 전부 실행하거나 하나도 실행하지 않는다. 수행하고 있는 트랜잭션에 의해 변경된 내역은 테이블에 유지하면서, 이전에 commit된 상태 또한 임시 영역에 저장함. 만약 현재 수행중인 트랜잭션에서 오류가 발생하면 임시 영역에 저장했던 상태로 rollback rollback segment : 이전 데이터들이 임시로 저장되는 영역 save point를 지정해서, 확실하게 오류가 발생하지 않는 부분을 표시할 수 있음 중간에 오류가 나서 트랜잭션을 다시 수행할 때 이 지점으로 되돌아가면 됨 Consistency 일관성 트랜잭션이 성공적으로 완료되면 일관적인 DB상태를 유지하는 것 일관성이란 domain이나 primary ..
[데이터베이스] 인덱스 Index Index란? RDBMS에서 대용량의 데이터(레코드)가 있을 때, 특정 데이터를 검색하기 위해서 테이블의 레코드를 full scan하는 것이 아니라, 인덱스가 적용된 컬럼의 테이블(컬럼, 인덱스주소)을 따로 파일로 저장해놓고 그것을 검색해서 검색 효율을 높이는 방법 사실 여기까지만 알고 그다지 깊게 알지 못했는데, 면접 때 구체적인 걸 물어보셔서 대답하지 못했던 부분이다. 좀 더 자세히 살펴보도록 하자. 범위 스캔 Range Scan 인덱스는 key column순으로 정렬되어 있기 때문에, 특정 값을 찾다가 해당 범위를 벗어나는 값을 만나면 멈춘다. (그러면 그 이전 값과 벗어났던 값 사이에 있다는 의미이므로) 인덱스 테이블 파일은 B-tree로 주로 표현한다 B-tree란? root block, bra..
[데이터베이스] 격리성 관련 문제와 격리성 수준 (Isolation Level) 격리성 관련 문제점 1. Dirty Read 한 트랜잭션(T1)이 데이터에 접근하여 값을 'A'에서 'B'로 변경했고 아직 커밋을 하지 않았을때, 다른 트랜잭션(T2)이 해당 데이터를 Read 하면? T2가 읽은 데이터는 B가 될 것이다. 하지만 T1이 최종 커밋을 하지 않고 종료된다면, T2가 가진 데이터는 꼬이게 된다. 트랜잭션이 rollback했는데, 다른 트랜잭션이 rollback 이전에 수정되었던 데이터를 갖고 있어서 문제가 되는 경우 2. Non-Repeatable Read 한 트랜잭션(T1)이 데이터를 Read 하고 있다. 이때 다른 트랜잭션(T2)가 데이터에 접근하여 값을 변경 또는, 데이터를 삭제하고 커밋을 때려버리면? 그 후 T1이 다시 해당 데이터를 Read하고자 하면 변경된 데이타 ..