전체 글(278)
-
[SQL 튜닝 실습] SQL 튜닝 기초 2
형변환으로 인덱스를 활용하지 못하는 나쁜 SQL 문 튜닝 전 SQL 문 select count(1) from 급여 where 사용여부 = 1; 튜닝 전 분석 explain select count(1) from 급여 where 사용여부 = 1; 인덱스 확인 필요 show index from 급여; 테이블 구조 확인 필요 desc 급여; 조건문에 사용되는 사용여부 열 값이 숫자 타입으로 써서 데이터에 접근해서 DBMS 내부의 묵시적 형변환이 발생했다 따라서 형변환이 발생하지 않도록 SQL문을 조정해야 한다. 튜닝 후 SQL select count(1) from 급여 where 사용여부 = '1'; 실행계획 explain select count(1) from 급여 where 사용여부 = '1'; I_사용여부 ..
2021.08.08 -
[SQL 튜닝 실습] SQL 튜닝 기초 1
실습관련 기본 세팅 워크벤치 메뉴 > Edit > Preferences SQL Execution: Limit Rows 체크 해제 및 카운트 999999 로 설정 (*) 기본적으로 1000 로우값 출력이 기본으로 세팅되어있음 SQL 튜닝 준비하기 각 테이블별 인덱스 목록 급여 PK INDEX 부서 PK INDEX 부서관리자 PK INDEX 부서사원_매핑 PK INDEX 사원 PK INDEX INDEX 사원출입기록 PK INDEX INDEX INDEX 직급 PK (*) 고유 인덱스 : UI_로 시작 (Unique Index) (*) 비고유 인덱스 : I_로 시작 (Index) 인덱스 정보 확인 show index from 테이블명; SQL문 단순수정으로 착한쿼리 만들기 기본 키를 변형하는 나쁜 SQL문 튜닝..
2021.08.08 -
[SQL 튜닝 실습] SQL 튜닝용어 정리 3
응용 용어 선택도 특정 컬럼을 기준으로 조건절에 따라 선택되는 데이터 비율 해당 컬럼에 중복되는 데이터가 많으면 "선택도가 높다" 중복 데이터가 적으면 "선택도가 낮다" 낮은 선택도의 컬럼을 인덱스로 지정한다 선택도 = 선택한 데이터 건수 / 전체 데이터 건수 변형된 선택도 = 1 / DISTINCT(COUNT 열명) 학번 컬럼의 선택도 = 1 / 100 0.01 의 선택도라면 낮은 선택도라고 할 수 있다 성별 열 컬럼의 선택도 = 50 / 100 0.5 의 선택도라면 높은 선택도라고 할 수 있다. 카디널리티 하나의 데이터 유형으로 정의되는 데이터 행의 개수 전체 데이터에 접근 후 출력될 것이라고 예상되는 데이터 건수를 말함 현업에서는 전체 행에 대한 특정 컬럼의 중복 수치를 나타내는 지표로 활용 카디널..
2021.08.08 -
[SQL 튜닝 실습] SQL 튜닝용어 정리 2
[조인 훈련] 이 학번 컬럼값을 기준으로 두 테이블을 가지고 조인 분석을 하세요. 순서 1. 원 2개 겹쳐그리기 2. 공통된 교집합 찾아서 값 적기 3. 교집합을 제외한 각각 양쪽에 해당하는 값 적기 정답 (*) 조인작성 시 사람이 판단하는 기준인 왼쪽을 기준으로 인지하기 편하므로 레프트 아우터 조인을 권장한다. 조인 알고리듬 용어 테이블 조인 시, 조인순서 배치에 따라 테이블의 데이터에 접근하는 우선순위 첫번째 : 드라이빙 테이블 두번째 : 드리븐 테이블 용어로 구분한다. (*) 리턴결과가 적을 것으로 예상되는 테이블을 드라이빙 테이블로 선정하며, 조인 조건적의 열이 인덱스로 설정되도록 구성해야한다. 중첩 루프 조인 (NL 조인) 드라이빙 테이블의 데이터 1건당 드리븐 테이블의 데이터 N건 씩 반복하며..
2021.08.08 -
[SQL 튜닝 실습] SQL 튜닝용어 정리 1
1. 물리 엔진과 오브젝트 용어 마리아DB SQL 수행 프로세스 1) 사용자로부터 SQL문 실행 2) MariaDB 엔진이 SQL문 문법 검사 (파싱) 3) 사용자가 요청한 데이터를 빠르고 효율적으로 찾아가는 전략적 계획 수립 (옵티마이저) 4) 이 수립된 계획대로 스토리지 엔진에 위치한 데이터까지 찾아간 후 해당 데이터를 마리아DB 엔진으로 전달 5) 마리아DB 엔진은 전달된 데이터에서 불필요한 부분을 필터링 후 필요한 연산을 수행 후 사용자에게 최종결과를 알려준다. 스토리지 엔진 (InnoDB, MyISAM, Memory 등) 사용자가 요청한 SQL문을 토대로 DB로부터 저장된 디스크나 메모리에서 필요한 데이터를 가져오는 역할 수행 수행 후 해당 데이터를 마리아DB 엔진으로 보내준다. 데이터 저장 방..
2021.08.08 -
[SQL 튜닝 실습] MariaDB 소개
[업무에 바로 쓰는 SQL 튜닝] 이라는 책을 기준으로 작성합니다. 자세한 설명은 책을 참고하세요. 일반적으로 DBMS를 실 서비스에 도입 시 장애예방효과 또는 장애 발생 시 가용성을 기대하여 이중화 또는 삼중화 구조로 구축한다. 1. 오라클 DB 와 마리아DB의 구조적 차이 오라클 DB 구조 - 오라클 DBMS는 공유 스토리지를 사용하여 여러 DB를 하나의 SQL문으로 같은 결과를 출력한다 마리아 DB 구조 - 독립적인 스토리지 기반으로 마스터-슬레이브 구조로 구축한다 - 마스터 노드에는 업데이트, 삽입, 삭제 (쓰기 : UPDATE, INSERT, DELETE) - 슬레이브 노드에는 검색 (읽기 : SELECT) - 마리아DB 버전 10.3 이상에서는 시퀀스 사용 가능 - 대부분의 SQL문이 중첩 루..
2021.08.08