DataBase 2

인덱스는 언제, 왜, 어떻게 사용해야 좋을까?

언제 : 읽기 작업 속도 향상이 필요할 때왜 : 인덱스를 통해 비용이 가장 많이 요구되는 디스크 랜덤 I/O를 최대한 줄일 수 있기 때문이다. 기본적으로, 인덱스를 통한 접근이 디스크 직접 접근보다 비용이 많이 듦. 일단 한 번 인덱스 탐색을 더 거쳐야하는 것이기 때문에.. 하지만, 데이터가 대규모이고 찾는 레코드의 건수가 전체 레코드의 20% 이하일 경우인덱스를 통한 탐색인덱스는 정렬 상태이기 때문에, 빠르게 탐색을 완료할 수 있음. -> 인덱스틀 통해 정확한 데이터 위치를 찾았음으로, 디스크 접근 시 한 번의 랜덤 I/O가 추가 발생. 만약, 인덱스에 있는 칼럼만으로도 결과 반환이 가능하면 디스크 접근까지 하지 않아도 된다.직접 디스크 탐색디스크에 있는 실제 데이터는 정렬되어 있지 않다. 따라서 모든..

DataBase 2024.07.31

트랜잭션 격리 수준, 스프링 @Transactional

1. 트랜잭션 격리 수준트랜잭션 : 데이터베이스의 일관성과 무결성을 유지하기 위한 논리적인 작업 단위. 원자성, 일관성, 고립성, 지속성을 유지한다.트랜잭션 격리 수준(isolation level) : 트랜잭션이 얼만큼 고립되어 있는 지 그 정도를 말한다. 동시에 여러 트랜잭션이 진행될 때, 이 격리 수준에 따라서 다른 트랜잭션에서 작업되는 데이터에 얼만큼 접근할 수 있는 지가 제어된다.  격리 수준에 따라 발생할 수 있는 문제점더티 리드 : 어떤 트랜잭션에서 처리한 작업이 완료(COMMIT)되지 않았음에도, 다른 트랜잭션에서 해당 작업에 의한 데이터를 볼 수 있는 현상이다. 이는 데이터의 일관성을 깨뜨려서 정합성에 큰 문제를 일으킬 수 있다.ex) A,B 트랜잭션A -> 선재의 계좌 잔액 10000에서..

DataBase 2024.05.29