본문 바로가기

SQL

(5)
인덱스 확장 기능 사용법 : 인덱스 스킵 스캔 외(친절한 SQL 튜닝) 인덱스 범위 스캔 vs 인덱스 풀 스캔Index Range Scan가장 기본적인 인덱스를 사용한 액세스 방식이다.아래와 같은 그림처럼 인덱스 루트(시작점)까지 수직 이동 후 필요한 범위를 스캔한다.   이전에 이야기했듯, 선두 컬럼을 가공하지 않는 등의 인덱스 순서를 그대로 사용할 수 있는 방법을 사용할 경우 일반적으로 Range Scan이 사용된다.Index Full Scan수직 탐색 없이 바닥의 리프 노드 블록을 ‘전부’ 순회하여 스캔할 경우를 의미한다.    Index Full Scan은 그냥 순차 스캔과 동일한가? (인덱스 풀 스캔의 효용)인덱스 Full Scan과 순차 스캔은 비슷해 보이지만 완전히 동일하지 않다. 인덱스를 읽지만, 정렬된 상태로 인덱스의 모든 엔트리를 순차적으로 읽는 작업이다...
Explain Analyze로 알아보는 복합 인덱스 성능 확인해보기 (24.07.02) *24.07.02 노션 복구본입니다.파티셔닝 인덱스 효율을 타지 못했던 내용을 정리했던 기록이다. 상황 : 인덱스 효율 0    전체 컬럼은 약 3000만개 가량, 12GB 정도 되는 용량의 테이블을 기준으로 한다.   프로토타입 조회 버전. (지금 보니 repository 분리 안한게 눈에 띈다..) 특정 테이블 기준이지만, 현재 수집된 데이터는 1차적으로 ‘시간값(Created_At)’ 파티션 테이블 사이의 값, 그리고 +a의 추가적인 조건을 가지고 있다.이것은 ID(UUID)일 수도, Long(특정 id)일 수도, 최악의 경우 Varchar일 수도 있다.여기서는 UUID를 기준으로 Explain을 통해 검색 성능의 차이를 확인해 볼 것이다. tomahawk=# explain analyze selec..
인덱스 기본 사용법 : 연산 최적화(친절한 SQL 튜닝) 인덱스 기본 사용법인덱스 컬럼(선두 컬럼)을 가공하지 않아야 인덱스를 정상적으로 사용할 수 있다.즉, ‘인덱스를 정상적으로 사용한다’ 라는 개념은 리프 블록에서 ‘시작점’ 을 찾아 순차 스캔하며 결과를 찾는 것이다. 인덱스 기본 사용법인덱스 컬럼(선두 컬럼)을 가공하지 않아야 인덱스를 정상적으로 사용할 수 있다.즉, ‘인덱스를 정상적으로 사용한다’ 라는 개념은 리프 블록에서 ‘시작점’ 을 찾아 순차 스캔하며 결과를 찾는 것이다.이것은 결국 B-Tree의 그래프에서 리프 노드를 먼저 찾은 뒤, 인덱스 시작점부터 리프 블록의 일부분만 스캔하는 Range Scan을 의미한다.이는 일반적인 DB의 인덱스 구현은 B+Tree를 기반으로 하므로, 리프 노드에서 시작해 오른쪽 리프 노드로 자연스럽게 넘어가는 범위 탐..
MySQL 데이터를 Psql로 마이그레이션하기 프로젝트 과정에서 데이터를 마이그레이션할 상황이 발생했다. MySQL 기반 데이터를 psql에 적용시켜보자. 먼저, Data Export를 통해 dump.sql 파일이 존재함을 가정한다. 1. NotePad++ 설치 및 데이터 변환 (심플) https://notepad-plus-plus.org/downloads/ Downloads | Notepad++ notepad-plus-plus.org 일단 최신 버전의 NotePad를 다운로드하자. 만일 리눅스 환경이라면 sed -i -e 's/DEFAULT CHARACTER SET [a-z]*\s*//g' dump.sql 을 통해 간편하게 변환할 수도 있다. NotePad를 통해 psql에서 사용할 수 없는 데이터를 전부 변환처리 해야 한다. Ctrl + H를 통..
DataBase 2주차 정리 - SQL, DDL, DML, DCL, JOIN, 쿼리 순서 질문 1. SQL에 대해서 설명해주세요. C언어와 같은 프로그래밍 언어와 어떤차이가 있나요? 특정 어휘와 특정 구문을 갖는 프로그래밍 언어의 정의를 고려하면 SQL은 프로그래밍 언어라고 할 수 있다. 그러나 범용 사용이 가능한 GPL(General Purpose Language)보다는 실제로는 DSL(Domain-Specific Language) 에 가깝다. SQL은 데이터베이스 관리 및 데이터 조작을 위해 설계된 특수 목적 언어(Domain-Specific Language, DSL)이다. 이 언어는 데이터를 저장, 검색, 수정, 삭제하는 등의 기능을 제공한다. SQL과 DSL SQL은 프로그래밍 언어의 일반적 정의에 부합한다. 특정 어휘와 구문을 사용하며, 명령을 실행할 수 있기 때문이다. 그러나 일반..