본문 바로가기

인덱스3

4.4 옵티마이저 힌트 힌트의 사용법 MariaDB에서 옵티마이저 힌트는 종류별로 그 사용 위치가 정해져 있는데, 두가지 방법이 있습니다. 이 두가지 방법모두 잘못 사용할 경우 오류를 발생시키게 됩니다. 오라클 처럼 힌트가 주석의 일부로 해석되는 것이 아니라 SQL의 일부로 해석(설령 힌트가 주석안에 표기되었다 하더라도)되기 때문입니다. 사용법1 SELECT * FROM employees USE INDEX (primary) WHERE emp_no=10001; 사용법2 SELECT * FROM employees /*! USE INDEX (primary) */ WHERE emp_no=10001; 첫번째 예제에서는 별도의 주석 표기 없이 SQL 문장의 일부로 작성하는 방식이며, 두 번째 예제는 MariaDB에서 힌트를 위한 주석 표.. 2021. 6. 14.
CH01. 인덱스 원리와 활용 - 08. 인덱스 설계 SQL 각각을 위해 최적화된 인덱스를 모두 생성할 수 있다면 SQL튜닝과 인덱스 설계만큼 쉬운 것도 없습니다. 하지만 그런식으로 인덱스를 생성하다 보면 테이블마다 수십 개씩 달릴 것이고 관리비용뿐 아니라 시스템 부하를 가중시키는 원인이 됩니다. 인덱스 설계가 어려운 이유가 여기에 있으며, 시스템 전체를 바라보는 시각에서 전략적으로 접근하려는 노력이 중요합니다. (1) 가장 중요한 두 가지 선택 기준 인덱스 스캔 방식에 여러 가지가 있지만 가장 정상적이고 일반적인 것은 Index Range Scan입니다. 그리고 이를 위해서는 인덱스 선두 컬럼이 조건절에 반드시 사용되어야 합니다. 따라서 결합 인덱스를 구성할 때 첫 번째 기준은 조건절에 항상 사용되거나, 적어도 자주 사용되는 컬럼들을 선정하는 것입니다. .. 2020. 3. 8.
인덱스 스플릿(INDEX SPLIT) 인덱스 스플릿(index split)이란? B-tree index에서 새로운 index key가 들어왔을 때 기존에 할당된 블록 내에 저장할 영역이 없어 새로운 블록을 할당하는 것입니다. 인덱스 스플릿은 새로 들어오는 index key 데이터에 따라 2가지 방식으로 이루어집니다. 1. 50:50 index split index key값이 기존의 index key 값에 비해 제일 큰 값이 아닌 경우 50/50 block split이 발생합니다. 기존에 존재하던 old block과 새로운 new block에 50%씩 데이터가 채워져 스플릿이 발생하는 것을 말합니다. 최대값이 아닌 값이 들어오면 old와 new block 중 어느 곳에 들어갈 지 모르기 때문에 50:50으로 스플릿을 합니다. 2. 90:10 .. 2019. 12. 30.