데이터베이스
-
인덱스데이터베이스 2021. 7. 11. 13:18
인덱스가 무엇인지, B-Tree Index, Hash Index 등에 대해 알고있다는 가정하에 작성 인덱스는 왜 쓰는가? 인덱스는 '인덱스가 검색 범위를 제한시켜주기 때문에' 빠르게 데이터를 검색할 수 있게 해준다. 인덱스가 왜 어떻게 검색 범위를 제한해주나? 인덱스는 항상 정렬이 되있기 때문에 라고 생각할 수 있지만, 그건 특정 인덱스에 한정된 이야기다. 검색범위를 제한해주는 방법은 어떤 인덱스를 사용하느냐에 따라 달라진다. B-Tree 인덱스 B-Tree 인덱스는 항상 정렬된 상태를 유지한다. (장점) 항상 정렬된 상태를 유지하기 위해서는 삽입과 삭제시에 정렬이 발생한다. (단점) 이 경우는 정렬된 상태로 검색 범위를 제한시킬 수 있는게 맞다. Hash Index 해시 인덱스는 정렬되어 있다고 볼 수..
-
Select 쿼리는 S락이 아니다. (X락과 S락의 차이)데이터베이스 2021. 7. 11. 13:10
이 글에서 사용한 dbms는 MySQL 8.x 버전이고 innoDB engine 기준입니다. 아~주 기본적인 레벨, 거의 시작점 수준의 이야기이니 감안해주세요. 이 글을 쓰게된 이유 저는 Real MySQL을 통해 DB를 공부하던 중 S-Lock 과 X-Lock에 대해 알게 되었습니다. 그리고 SELECT - FOR UPDATE 쿼리는 해당 레코드의 X-lock을 획득한다는 사실도 알게되었고, 이 사실을 이용해 직접 실습을 해보던 중 저의 뇌가 꼬이기 시작했습니다. '1번 트랜잭션에서 A레코드의 X-Lock을 획득했으니 B트랜잭션에서는 A레코드를 읽을 수 없어야 하지. 1번 트랜잭션의 작업이 끝날때 까지 2번 트랜잭션의 SELECT는 대기상태가 되겠군...?' '아니... 조회가 왜 돼?😯' S-Lock..