database
[MySQL] 실행 계획
Real MySQL 8.0 읽으면서 배웠던 부분들을 정리한 글입니다. 실행 계획이란? 옵티마이저가 쿼리를 실행하기 전 쿼리와 통계정보를 통해 세운 최적의 계획 통계 정보 MySQL 5.7 버전까지는 테이블과 인덱스에 대한 개괄적인 정보만을 가지고 실행 계획을 수립했다. MySQL 8.0 버전부터는 인덱스되지 않은 컬럼들에 대해서도 데이터 분포도를 수집해서 저장하는 히스토그램 정보가 도입되었다. 테이블 및 인덱스 통계 정보 주어진 쿼리의 자체의 가장 최적을 선택하는 질의 기반 최적화 방식과 비교하여, 비용 기반 최적화에서 가장 중요한 것은 통계 정보이다. MySQL 서버의 통계 정보 MySQL 5.5 버전까지는 각 테이블의 통계 정보가 메모리에 관리되었기 때문에, 서버 재시작시 수집된 통계 정보가 모두 사..
[MySQL] InnoDB의 B-Tree Index
Real MySQL 8.0 읽으면서 배웠던 부분들을 정리한 글입니다. 디스크 읽기 방식 컴퓨터에서 CPU나 메모리 같은 전자식 장치와 달리 기계적 장치인 디스크는 상대적으로 속도가 느리다. 따라서 디스크 I/O 감소가 데이터베이스 성능 튜닝에 많은 영향을 주게 된다. HDD와 SSD의 차이점 이러한 기계식 하드디스크 드라이브를 대체하기 위해 전자식 저장 매체인 SSD가 많이 출시되고 있다. 또한 SSD도 하드 디스크 드라이브와 같은 인터페이스(SATA, SAS)를 지원하므로 내장 디스크나 DAS 또는 SAN에 그대로 사용할 수 있다. 원판을 기계적으로 회전시키는 하드디스크와 달리 SSD는 플래시 메모리를 사용하므로 상대적으로 데이터를 빨리 읽고 쓸 수 있다. 디스크의 헤더를 움직이지 않고 한 번에 많은 ..