CS/Database

CS/Database

MySQL Lock과 트랜잭션 격리 수준 정리 | 데이터베이스 Lock & Isolation Level 이해

MySQL 기본적인 Locking & 격리 수준MySQL의 기본적인 Lock기본적으로 REPEATABLE READ 격리 수준을 사용한다.MVCC (Multi-Version Concurrency Control)을 활용하여 데이터 일관성을 유지합니다.트랜잭션이 진행되는 동안 동일한 데이터를 읽으면 변경된 데이터는 보이지 않습니다. (커밋된 새로운 트랜잭션의 데이터가 반영되지 않음)SELECT 시 Read Lock 걸지 않음select 쿼리는 잠금을 걸지 않음MVCC를 사용해 트랜잭션이 시작된 시점의 데이터 스냅샷 반환UPDATE / DELETE 시 Record Lock (행 단위)행에 대해 Record Rock을 획득합니다.해당 행이 다른 트랜잭션에서 수정되지 않도록 방지GAP Lock (Phantom Re..

CS/Database

데이터베이스 B Tree 자료구조란, 데이터 삽입 과정 및 AVL Tree와 차이 이해하기

인덱스란데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조로, 사전의 목차와 유사하다.저장되는 컬럼의 값을 사용하여 항상 정렬된 상태를 유지합니다.이러한 특징으로 인덱스는 쓰기 작업인 Insert, Update, Delete 연산 성능이 희생된다는 장점이 있습니다.하지만 데이터베이스 작업은 읽기 작업이 80% 정도 일어나므로, 인덱스를 사용하는 것이 더 큰 장점이 있습니다.InnoDB 스토리지 엔진에서는 Secondary Index(Primary Index를 제외한 모든 인덱스)의 리프 노드에는 레코드의 PK가 저장됩니다. 따라서 Secondary Index 검색에서는 레코드를 읽기 위해 PK를 가지고 있는 B-Tree를 다시 한번 검색해야 합니다. (1 + 1)B Tree자녀 노드의 최대 개수를..

CS/Database

[Database] 데이터베이스 index, clustered index, non-clustered index 이해하기

Index인덱스 파일은 데이터베이스에서 쿼리 성능을 향상시키기 위해 테이블의 특정 컬럼 값과 해당 행의 위치(Pointer)를 저장합니다.인덱스는 테이블의 데이터를 효율적으로 검색하기 위한 자료구조를 활용합니다. (B-Tree, Hash)Indexed Column Value인덱스가 설정된 컬럼의 실제 값들이 저장됩니다.해당 값을 이용해 데이터베이스가 특정 행을 찾는 데 필요한 정보로 사용합니다.Indexed Column Value: 101, 102, 103, 104, ...Row Pointer인덱스 파일에는 해당 인덱스 키 값이 테이블의 어느 행에 위치하는지에 대한 정보를 나타내는 포인터가 함께 저장됩니다.해당 포인터는 테이블의 실제 데이터 행을 가리킵니다.Indexed Column Value: 101 ..

CS/Database

데이터베이스 인덱스 종류와 원리: 희소 인덱스, 밀집 인덱스, 클러스터링 인덱스

인덱스란 ▶ DBMS가 데이터베이스 내의 특정 레코드들을 빠르게 찾을 수 있도록 하는 데이터 구조이며, 인덱스를 통하여 질의를 수행하면 응답 시간이 향상됩니다. 즉, 인덱스는 데이터베이스에서 원하는 데이터를 조회하는데 시간을 단축시켜 주는 또 하나의 파일 데이터라 할 수 있습니다. 인덱스는 보통 형태로 구성되어 있습니다. 디스크 접근 시간이 주기억 장치 접근 시간에 비해서 크며 대부분의 데이터베이스 응용에서 디스크 접근을 많이 요구하여, 탐색 시간을 단축해야 좋은 성능을 가질 수 있습니다. 인덱스 파일의 크기는 보통 데이터베이스 파일의 크기에 비해 훨씬 작습니다.왜냐하면 인덱스는 여러 애트리뷰트 중에서 탐색 키에 해당하는 일부 애트리뷰트만 포함되기 때문입니다. (+ 포인터도 있음) 데이터베이스에서 인덱..