728x90
인덱스저번에 말한 바와 동일하게 이런 특징이 있다B-Tree 등의 자료구조 기반의 효율적인 탐색이 가능하다특정 열(Column)에 대해 정렬된 형태로 저장하여 검색 속도를 높인다데이터가 많아질수록 index의 유무가 쿼리 성능에 큰 영향을 미친다그리고 이제 이 인덱스는 그 특징에 따라 분류할 수 있다. 클러스터/비클러스터(Cluster/NonCluster) 인덱스 잘 알려진 지식으로 테이블의 PK는 보통 인덱스 설정이 되어있음을 우린 알고 있다. 이와 관련하여 클러스터/비클러스터 유형이 있는데, 이 PK가 '클러스터 인덱스' 유형에 속한다. ✔️ 클러스터 인덱스간단히 그렸다. 그림을 보면- 인덱스 페이지 내에서 Root 노드는 PK(id)를 Key로, Page에 위치에 대한 포인터를 갖고 있다.-..
Page페이지(Page)는 데이터베이스에서 데이터를 저장하고 관리하는 가장 작은 물리적 단위다.디스크와 메모리 간 데이터 이동에서 주요 역할을 하는데 이런 특징이 있다. 첫 째, 일반적으로 고정 크기를 갖는다. 가령 PostgreSQL에선 8KB고, MySQL에서는 16KB로 DBMS에 따른 차이가 있다.둘 째, Page는 여러 행을 갖고 있다. 하나의 페이지에는 많~은 데이터 행을 포함하고 있는 것이다.셋 째, 데이터베이스가 Disk에서 데이터를 읽거나 쓸 때 이 페이지 단위로 작업을 한다. 그러니 얘 때문에 Disk I/O 성능이 데이터베이스 쿼리 성능에도 직접적인 영향을 미치고 있다. 예를 들어 다음과 같은 과정이 있을 수 있다.1. 데이터가 10000개가 있다.2. 각 페이지는 5개의 데이터를 저..
데이터베이스의 트랜잭션 격리 수준1️⃣ Read Uncommitted (읽기 미완료)가장 낮은 격리 수준으로, 하나의 트랜잭션이 아직 커밋되지 않은 데이터임에도 다른 트랜잭션이 읽을 수 있다이 시점에서는 Dirty Read 라고 하여, B트랜잭션이 아직 커밋되지 않은 A트랜잭션의 데이터를 읽어버렸는데 A트랜잭션이 롤백되었다면 잘못된 데이터를 읽은 것이 되버린다. 이 문제는 Read Committed 단계에서 해결할 수 있다2️⃣ Read Committed (읽기 완료)한 트랜잭션이 커밋된 데이터만 읽은 수 있다. 커밋되지 않은 데이터는 다른 트랜잭션이 접근하지 못한다. 그러나 동일 트랜잭션에서 동일 데이터를 두 번 읽을 때, 다른 트랜잭션이 데이터를 수정해버렸다면 읽은 값이 달라져버린다. 이를 Non-r..
1. UUID-Ossp 익스텐션 설치Postgre 접속 후, Script로 아래의 Extention 설치create extension if not exists "uuid-ossp"; 2. 생성 확인select uuid_generate_v4()
여러 코딩테스트를 치다보니 자잘한 함수가 안 외워져 풀 수가 없었습니다.그래서 SQL문제 30개를 풀어보며 필요한 문법, 함수, 연사자들을 제대로 정리해봤습니다. 🧨MYSQL 기준이며, ORCLE은 일부 호환이 안 될 수 있습니다. 1️⃣SELECT의 기본 문법WHERESELECT * FROM table WHERE colume = 'value';ORDER BYSELECT * FROM table ORDER BY column ASC; SELECT * FROM table ORDER BY column DESC;SELECT * FROM table ORDER BY column DESC LIMIT 3;GROUP BYSELECT column, COUNT(*) FROM table GROUP BY column;HAVLI..