2025/03/12 4

[Real MySQL] 13-1. 파티션: 개요

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 파티션 기능은 큰 테이블을 논리적으로 여러 개의 작은 단위로 나누어 저장하는 기능입니다. 1. 개요파티션을 사용하는 이유단일 INSERT와 단일 또는 범위 SELECT의 빠른 처리파티션하지 않으면 인덱스도 커지고 그만큼 메모리 공간도 많이 필요해짐인덱스 크기가 메모리 사이즈보다 커지면 연산 시 성능이 심각하게 저하됨파티션은 데이터와 인덱스를 조각화해서 물리적 메모리를 효율적으로 사용할 수 있게 만들어줌 데이터의 물리적인 저장소를 분리데이터나 인덱스가 파일 시스템에서 차지하는 공간이 크다면 백업이나 관리작업이 어려워짐단, 파티션별 인덱스를 따로 가지는 것은 지원하지 않음 이력 데이터의 효율적인 관리라이프 사이클이 짧음불필요해진 데이터..

Database/Mysql 2025.03.12

[Real MySQL] 10-3. 실행 계획: 실행 계획 분석

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다.  1. id 칼럼테이블들이 조인될 경우, 같은 id 값을 할당받음id 값은 테이블의 접근 순서를 의미하지 않음같은 id라면 먼저 올라온 것이 먼저 접근된 순서임을 의미함 2. select_type 칼럼각 단위 select 쿼리가 어떤 타입의 쿼리인지 표시되는 컬럼 select_type설명예제SIMPLE단순한 SELECT 쿼리로, 서브쿼리를 사용하지 않음. PRIMARYUNION이나 서브쿼리를 포함하는 쿼리에서 가장 바깥쪽의 SELECT 쿼리. UNIONUNION으로 결합된 SELECT 쿼리 중 두 번째 이후의 쿼리. DEPENDENT UNION서브쿼리 내에서 UNION 또는 UNION ALL로 결합된 테이블. UNION RESULT..

Database/Mysql 2025.03.12

[Real MySQL] 10-2. 실행 계획: 실행 계획 확인

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다.1. 출력 포맷단순 테이블 형태JSON (FORMAT 옵션)TREE (FORMAT 옵션) 2. 쿼리 실행 시간 확인EXPLAIN ANALYZE실행 계획 및 단계별 소요 시간 정보 확인 TREE 형태들여쓰기는 호출 순서를 의미함같은 레벨에서는 상단에 위치한 라인이 먼저 실행다른 레벨에서는 가장 안쪽에 위치한 라인이 먼저 실행 예시explain analyze select e.hire_date, avg(s.salary) from employees e inner join salaries s on s.emp_no = e.emp_no and s.salary > 50000 and s.from_date '1990-01-..

Database/Mysql 2025.03.12

[Real MySQL] 10-1. 실행 계획: 통계 정보

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. 테이블 및 인덱스 통계 정보통계 정보가 비용 기반 최적화에 가장 중요함 MySQL 서버의 통계 정보InnoDB 스토리지 엔진을 사용하는 테이블에 대한 통계 정보를 영구적으로 관리할 수 있음서버가 재시작되어도 재사용이 가능함 통계 테이블 mysql.innodb_table_statsmysql.innodb_index_stats 통계 테이블 컬럼select * from mysql.innodb_index_stats where table_name ='employees';stat_name='d_diff_pfx01': 인덱스가 가진 유니크한 값의 개수stat_name='n_leaf_pages': 인덱스의 리프 노드 페이지 개수stat_nam..

Database/Mysql 2025.03.12