반응형

SQL & DB 70

[SQL 튜닝] 파티션을 활용한 DML튜닝

테이블 파티션 - 파티셔닝은 테이블 또는 인덱스 데이터를 특정 컬럼(파티션 키) 값에 따라 별도 세크먼트에 나눠서 저장하는 것 - 파티션이 필요한 이유 1. 관리적측면 : 파티션 단위 백업, 추가, 삭제, 변경 --> 가용성 향상 2. 성능 측면 : 파티션 단위 조회 및 DML, 경합 또는 부하 분산. 1) Range 파티션 주로 날짜 컬럼을 기준으로 파티셔닝함. 파티션 테이블에 대한 SQL 성능 향상 원리는 파티션 Pruning(=elimination)에 있음. 파티션 pruning이란 SQL 하드파싱이나 실행 시점에 조건절을 분석해서, 읽지 않아도 되는 파티션 세그먼트를 액세스 대상에서 제외하는 기능. 파티션도 클러스터, IOT와 마찬가지로 관련있는 데이터가 물리적으로 인접하도록 저장하는 클러스터링 ..

SQL & DB/SQL 튜닝 2021.06.07

[SQL 튜닝] SQL분석도구(MYSQL)

실행계획 확인 1. Explain 실행계획 확인 방법 EXPLAIN SELECT * FROM 테이블 2. 컬럼별 내용정리 MySQL Query 추적 MySQL에 root로 로그인합니다. -general_log 확인 일반적으로 모든 쿼리에대한 로그를 남기기 위해 general_log Value 값을 변경해 주어야한다. general log란 MySQL에서 실행되는 전체 쿼리에 대한 로그이며, general log를 활성화하면 MySQL이 쿼리 요청을 받을 때 즉시 general log에 기록 SHOW VARIABLES LIKE '%general%'; -general_log 상태값 변경 상태값을 ON으로 변경해준다.(mysql 재시작 필요 없음) general_log_file의 기본 경로에서 실시간으로 입력..

SQL & DB/SQL 튜닝 2021.05.01

[SQL 튜닝] 인덱스 튜닝(1) - 테이블 액세스 최소화 및 부분범위 처리 활용

테이블 액세스 최소화 ROWID 논리적 주소에 가까움 포인터라고 이야기 하는 사람이 많지만 포인터가 아니다. 지시봉처럼 어딘가를 가리킨다는 의미에서는 포인터가 맞지만, 프로그래밍에서 배우는 포인터와는 전혀 상관 없음 메인메모리DB(MMDB) 잘 츄닝된 OLTP성 데이터베이스 시스템이면 버퍼캐시 히트율 99%이상. -> 디스크를 경유하지 않고 대부분 데이터를 메모리에서 읽는다는 뜻 But 메인메모리 DB만큼 빠르지 않음 메인 메모리DB의 경우 인스턴스를 기동하며 디스크에 저장된 데이터를 버퍼캐시로 로딩하고 이어서 인덱스로 생성한다. 오라클처럼 디스크 상의 주소정보를 갖는게 아니라 메모리상의 주소정보, 즉 포인터를 가지기 때문에 인덱스를 경유해 테이블을 액세스하는 비용이 낮다. I/O 매커니즘 DBA(=데이..

SQL & DB/SQL 튜닝 2021.05.01

[SQL 튜닝] 인덱스 기본

인덱스 : 테이블에서 데이터를 검색할 때 사용 인덱스 튜닝의 핵심요소 1. 인덱스 스캔 효율화 튜닝 - 인덱스 스캔과정에서 발생하는 비효율을 줄이는 것 2. 랜덤 액세스 최소화 튜닝(랜덤 I/O 방식을 사용) - 테이블 엑세스 횟수를 줄이는 것 ==> SQL튜닝은 랜덤 I/O와의 전쟁임 인덱스 구조 - 인덱스를 활용하면 일부만 읽고 멈출 수 있는 '범위 스캔'이 가능함 - DBMS는 B-Tree 인덱스를 사용 - B-Tree는 나무를 거꾸로 뒤집은 모양으로 뿌리가 위쪽에 있고 가지를 거쳐 맨 아래에 잎사귀가 있음 인덱스 수직적 탐색 - 조건을 만족하는 첫 레코드를 찾는 과정, 인덱스 스캔시작지점을 찾는 과정 - 루트를 포함한 브랜치 블록은 푯말과 같은 역할을 함. 인덱스 수평적 탐색 - 찾고자 하는 데이..

SQL & DB/SQL 튜닝 2021.04.22

[관계형 데이터 모델링] 논리적 데이터 모델링, 물리적 데이터 모델링(정규화, 역정규화)

논리적 데이터 모델링 정규화 - 중복을 제거하는 과정(쓰기의 편리함을 위해 읽기의 편리함을 희생) 제 1 정규화 - Atomic columns : 각각의 컬럼의 값은 값을 1개만 가져야함 - 하나의 컬럼을 두개의 컬럼으로 만들 수도 있지만, 테이블로 쪼개는 것이 좋음 제 2 정규화 - 부분 종속성이 없어야함 : 기본키 중에 중복키가 없어야함 - 부분적으로 종속되는 칼럼들을 따로 쪼개서 테이블을 만들어야 함 제 3 정규화 - No transitive dependencies : 이행적종속성 - 식별되는 ID와 이에 딸린 칼럼들을 분리해 내야함. 물리적 데이터 모델링 역정규화 - 정규화를 할 수록 Join을 많이 써야하기 때문에 성능이 떨어질 수 있음, 따라서 성능의 향상을 위해 join 사용횟수를 줄이기 위..

[관계형 데이터 모델링] 개념적 데이터 모델링

데이터 모델링의 순서 업무 파악 -> 개념적 데이터 모델링 -> 논리적 데이터 모델링 -> 물리적 데이터 모델링 개념 데이터 모델은 건축물의 조감도와 같이 구축하고자 하는 업무 모델의 핵심 데이터 구조를 큰 그림으로써 전체 업무에 대한 큰 윤곽을 잡고 세부적인 단계로 나아갈 수 있게 한다(ERD를 이때 그림) 논리 데이터 모델이란 개념 데이터 모델을 상세화 하여 논리적인 데이터 집합, 관리 항목, 관계를 정의한 모델 물리 데이터 모델이란 논리 데이터 모델을 DBMS의 특성 및 성능을 고려하여 구체화시킨 모델 개념적 데이터 모델링 - 관계형 데이터 모델링의 극치 - 현실에서 개념을 추출하는 필터를 제공 - 개념에 대해 다른 사람들과 대화하게 하는 언어로써 작용 - ERD(Entity Relationship..

반응형