DBMS/PERFORMANCE(8)
-
index tuning
1. 커버링 인덱스 (Covering Index) - 커버링 인덱스는 쿼리에서 필요한 모든 컬럼을 포함하여, 쿼리가 인덱스만으로도 필요한 데이터를 모두 처리할 수 있게 하는 인덱스를 말한다. 즉, 테이블 데이터에 접근하지 않고도 인덱스만으로 쿼리를 완전히 해결할 수 있다. - 장점: 커버링 인덱스를 사용하면 데이터베이스 엔진이 테이블의 데이터를 읽지 않고, 인덱스에서 직접 데이터를 조회할 수 있어 쿼리 성능이 크게 향상된다. CREATE INDEX idx_employee_cover ON employees(last_name, first_name, department_id); 위의 인덱스는 last_name, first_name, department_id 컬럼을 포함한다. SELECT ..
2024.08.06 -
튜닝
RDBMS(Relational Database Management System) 튜닝은 데이터베이스 성능을 최적화하기 위한 과정이다. 1. 쿼리 최적화 - 목적: 쿼리의 실행 속도를 높이고 시스템 자원 사용을 최소화. - 방법: - 불필요한 연산 제거: 쿼리에서 불필요한 계산이나 필터링을 제거하여 실행 시간을 단축. - 적절한 데이터 타입 사용: 데이터 타입을 정확하게 지정하여 메모리 사용과 계산 효율성을 높임. - 쿼리의 복잡성 감소: 복잡한 쿼리를 간단히 하거나 쿼리를 쪼개어 여러 단계로 나누어 처리. 2. 쿼리 분석 - 목적: 쿼리의 성능 병목을 찾고 개선점을 확인하기 위해 실행 계획을 분석. - 방법: - 실행 계획(Execution Plan) 분석: - 실행 계획은 데..
2024.08.06 -
INDEX TUNNING
인덱스(Index) - 정의: 인덱스는 데이터베이스 테이블의 검색 성능을 향상시키기 위해 사용하는 데이터 구조이다. - 역할: 인덱스를 사용하면 테이블의 특정 열에서 데이터를 빠르게 검색할 수 있다. 인덱스가 없으면 데이터베이스는 모든 행을 검사해야 하므로 시간이 많이 걸린다. 인덱스는 데이터를 저장할 때 삽입되는 순서대로 저장되는 것이 일반적이지만, 인덱스를 사용하면 특정 열을 기준으로 데이터를 빠르게 탐색할 수 있다. 인덱스를 생성하면, 데이터는 이진 트리를 확장하여 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2보다 큰 B-트리 구조를 따르게 된다. 인덱스의 종류 - 클러스터 인덱스 (Clustered Index) 테이블의 실제 데이터가 리프 노드에 저장되는 인덱스. 데이..
2024.07.08 -
데이터 정합성 for update
'for update' 구문을 반드시 사용해야 할 때 성능을 이유로 사용을 하지 않으면 데이터 정합성을 해칠 수 있다. 성능보다 중요한 것이 데이터 정합성이다. nowait이나 wait 옵션을 사용하면 select for update 문장을 통해 동시성을 높일 수도 있다. eg.은행 계좌 이체를 처리하는 시스템에서 두 사용자가 동시에 같은 계좌에서 돈을 인출하려고 하면, 데이터 정합성을 유지하기 위해 'for update' 구문을 사용해야 한다.BEGIN;SELECT balance FROM accounts WHERE account_id = 12345 FOR UPDATE;-- balance 확인 후, 인출 처리UPDATE accounts SET balance = balance - 100 WHERE ac..
2024.07.03 -
B-tree index structure
- Root Block (가장 상위 노드): 가장 상위에 있는 노드. - Branch Block (ROOT와 LEAF의 연결고리): 루트 블록과 리프 블록을 연결하는 노드. - Leaf Block (KEY + ROWID): 키와 ROWID 쌍을 포함하는 노드. - Tables (TABLE): 리프 블록이 참조하는 실제 데이터가 저장된 테이블. B-tree 인덱스는 계층적으로 구조화되어 있으며, 가장 상위에는 루트 블록이 있고, 그 아래로 브랜치 블록이 있으며, 마지막으로 리프 블록이 실제 데이터가 저장된 테이블을 직접 참조한다. 더보기The image shows a B-tree index structure used in databases. Here is an English description based..
2024.07.03 -
ROWNUM - COUNT STOPKEY
SELECT /* gather_plan_statistics */ * FROM ( SELECT rownum AS no, last_name, salary FROM ( SELECT last_name, salary FROM hr.employees ORDER BY salary DESC ) WHERE rownum = 1;- COUNT STOPKEY 연산은 결과 집합의 일부 레코드만 계산하여 성능을 향상시키는 방식이다. 상위 10개의 레코드만 필요하므로 처음 10개의 레코드만 검색하고 이를 반환하여 전체 결과 집합을 검색하는 것보다 효율적일 수 있다.- SORT ORDER BY STOPKEY 는 ORDER BY 절이 포함되어 있으며, 상위 10개의 레..
2024.04.19