Open su3inni opened 1 year ago
DML : Data Manipulation Language
select, insert , update, delete
DDL : Data Definition Language
delete 와 truncate 차이 -delete from table은 실제 디스크 공간을 반납하지 않고 auto_increment 값도 유지하고 있으나 -truncate table은 drop&create 하는 것과 같으므로 디스크 공간을 반납하며 auto_increment 값도 초기화한다.
DCL : Data Control Language
Transaction Control
UNION은 행을 결합 , JOIN은 열을 결합
Inner Join != Equi Join Inner Join은 값의 허용을 의미함 : 동등 조건이 아니어도 됨 Equi Join은 조인 조건
명시 방법
Nested Loop Join
두 개 이상의 테이블에서 하나의 집합을 기준으로 순차적으로 row를 결합하는 방식
MySQL 은 Nested Loop Join 방식으로 Join 수행
순차적으로 처리된다.
Nested Loop Join 사용시 주의사항
쿼리를 최적으로 실행하기 위해 각 테이블의 데이터가 어떤 분포로 저장되어있는지 통계 정보를 참조하여 최적의 실행 계획을 수립하는 작업이 필요하다.
옵티마이저
HINT
straight_join
명령어로 Join 순서 정렬/고정하는 힌트 use index
명령어로 어떤 인덱스를 사용할지 명시하는 힌트UNION / UNION ALL
KEY
INDEX
데이터 처리 속도를 최적화할 때 사용하는 물리적인 구조
튜닝에 가장 중요한 포인트 > Cost가 가장 적게 드는 방법
간단한 쿼리라도 Full Scan 여부를 확인하고 Index 설정 여부도 확인한다.
Index를 활용하지 못하는 경우
없거나 알려지지 않은 값을 의미하는 것으로 0이나 빈 문자열, 공백 문자열이 아니다. 꼭 IS NULL / IS NOT NULL 로 검색해야한다.
Character Set 형 변환 후 Join 되는 컬럼간 Character Set 일치가 되는지 꼭 확인하기. 강제 형변환 Slow Query가 대량으로 발생하면 서비스 장애로 이어질 수 있음
0. Database ?
데이터를 효율적으로 접근할 수 있도록 가공 및 저장한 것
1. DBMS
데이터베이스를 관리하기 위한 시스템 ex. ORACLE, MySQL, MSSQL ..
DBMS 유형
2. 데이터 모델링
2-1. ERD
서비스 요구 분석사항을 그림으로 관계를 표현한 것
정규화 / 반정규화