본문 바로가기
728x90
반응형

DB18

DB 저장 글 인덱스, 카디널리티, partial_idx (부분 인덱스), Index-only Scan, 여러 컬름으로 인덱스를 생성할 때에는 카디널리티가 높은 것에서 낮은 순서대로https://hyperconnect.github.io/2020/08/31/improve-slow-query.html PostgreSQL의 슬로우 쿼리에 대처하기데이터베이스에 적절한 인덱스를 추가하여 슬로우 쿼리를 빠르게 만들고 리소스 사용을 줄인 사례를 공유합니다.hyperconnect.github.io 2024. 7. 9.
[DB] partitioning, sharding, replication ❓ partitioning 종류 vertical partitioning 수직 파티셔닝 정규화 1NF, 2NF, 3NF, BCNF 를 통해 테이블을 나누는 것도 vertical partitioning 입니다. 어떤 테이블에서 select를 통해 특정 컬럼만 가져오는 쿼리를 만들었을 때, 디스크에서 메모리로 데이터를 가져올 때 where 조건에 맞는 것들 중에 select 한 특정 컬럼만 골라서 가져오는 것이 아니라 일단 해당하는 로우를 모두 가져오게 됩니다. 그럼 이때 어떤 컬럼이 사이즈가 매우 큰 데이터(ex 게시글 본문)를 가지고 있는데 select 한 컬럼이 아니라면 필요없는 데이터를 가져온게 되니 메모리 낭비가 발생합니다. 이럴 때 vertical partitioning 을 하면 효율적입니다. 이런.. 2024. 3. 22.
[DB] 인덱스에서 B tree 를 쓰는 이유 B tree는 BST(Binary Search Tree, 이진 탐색 트리) 보다 확장된 형태입니다.  BST는 자식노드가 최대 2개인 트리 왼쪽 서브트리는 부모보다 작은 값, 오른쪽 서브트리는 부모보다 큰 값 B Tree는 이보다 확장되어 자식노드를 2개 이상 가질 수 있는 트리입니다.모든 leaf 노드(최하위 노드)들은 같은 레벨에 있습니다. 최대 자식노드 수 M이 5 일 때 5차 B tree 라고 합니다. 최대 자식 수    M최대 키 수       M-1최소 자식 수    M/2의 올림        (root, leaf node 제외)최소 키 수       M/2의 올림 – 1   (root node 제외)    DB 인덱스에 B tree 계열을 사용하는 이유 B tree 계열 (B+ tree, B.. 2024. 3. 20.
[DB] 인덱스, unique index, multicolumn index, hash index where name = '홍길동' name 이라는 컬럼에 인덱스 없으면 100만개 full scan – 시간복잡도 O(N) 인덱스가 걸려있고 B-tree 기반이라면 O(logN) 일반 인덱스 : 중복 가능 유니크 인덱스 : 중복 불가능 여러개를 한번에 묶어서 인덱스 생성 가능 = multicolumn index 테이블을 생성하면서 만들 수도 있고 테이블 생성 후에 만들 수도 있음 primary key에는 RDBMS가 자동으로 인덱스를 생성해준다. where a = 7 and b = 95; 위의 경우 a에 대해서 인덱스를 생성하면 인덱스내에서 a = 7인 것을 찾고 또 a = 7인 것들을 full scan해서 b = 95 인 것을 찾아야 하기 때문에 비효율적이다. 그래서 a, b를 하나로 묶은 인덱스를 만.. 2024. 3. 19.
[DB] super key, candidate key, primary key, unique key, 1NF, 2NF, 3NF, BCNF 이쁘게 그림도 넣고 설명하고 싶지만 지금은 공부만 하는걸로도 시간이 부족하다.. 일단 설명만,, super key : unique하게 식별할 수 있는 컬럼을 포함하고 있는 모든 컬럼셋 candidate key(후보키) : unique한 컬럼만 가지고 있는 컬럼셋. super key는 unique하지 않은 컬럼을 포함하고 있지만, candidate key는 여기서 딱 unique한 컬럼만 가지고 있는 minimal한 super key 이다. super key ⊃ candidate key primary key(기본키) : candidate key에서 선택한 key unique key : primary key로 선택하지 않은 나머지 candidate key primary key + unique key = ca.. 2024. 3. 18.
728x90
반응형