DBMS/MySQL

    [MySQL] 옵티마이저 고급 최적화

    기존의 Real MySQL (5.0, 5.1 버전) 책을 너무 유익하게 봤는데, Real MySQL 8.0이 전면 개정판이 나와서... 설레는 마음에 보면서 개인적인 공부용으로 정리하고 있습니다. 역시 믿고 보는 Real MySQL... 👍 한번 사서 보시는 것을 강력 추천드립니다! 고급 최적화 MRR과 배치 키 액세스 MRR은 Multi-Range-Read로, Disk Sweep Multi-Range-Read라고도 한다. 네스티드 루프 조인 MySQL에서 지금까지 지원하던 조인 방식은 네스티드 루프 조인으로, 드라이빙 테이블의 레코드를 한 건 읽어서 드리븐 테이블의 일치하는 레코드를 찾아서 조인을 수행하는 것이다. MySQL 서버의 내부 구조상 조인 처리는 MySQL 엔진이 처리하지만, 실제 레코드를 ..

    [MySQL] 옵티마이저 GROUP BY 처리 방식

    기존의 Real MySQL (5.0, 5.1 버전) 책을 너무 유익하게 봤는데, Real MySQL 8.0이 전면 개정판이 나와서... 설레는 마음에 보면서 개인적인 공부용으로 정리하고 있습니다. 역시 믿고 보는 Real MySQL... 👍 한번 사서 보시는 것을 강력 추천드립니다! Group BY 처리 GROUP BY 또한 ORDER BY와 같이 쿼리가 스트리밍 된 처리를 할 수 없게 하는 처리 중 하나이다. GROUP BY 절이 있는 쿼리에서는 필터링 역할을 하는 HAVING 절을 사용할 수 있는데, GROUP BY에 사용된 조건은 인덱스를 사용해서 처리될 수 없으므로 HAVING 절을 튜닝하려고 인덱스를 생성하거나 다른 방법을 고민할 필요는 없다. 인덱스 스캔을 이용하는 GROUP BY (타이트 인..

    [MySQL] 옵티마이저 및 정렬 처리 방식

    기존의 Real MySQL (5.0, 5.1 버전) 책을 너무 유익하게 봤는데, Real MySQL 8.0이 전면 개정판이 나와서... 설레는 마음에 보면서 개인적인 공부용으로 정리하고 있습니다. 역시 믿고 보는 Real MySQL... 👍 한번 사서 보시는 것을 강력 추천드립니다! 실행계획 MySQL 서버로 요청된 쿼리는 결과는 동일하지만 내부적으로 그 결과를 만들어내는 방법은 매우 다양하다. 이런 다양한 방법 중 어떤 방법이 최적이고 최소의 비용이 소모될지 결정해야 한다. MySQL에서는 쿼리를 최적으로 실행하기 위해 각 테이블이 데이터가 어떤 분포로 저장돼 있는지 통계 정보를 참조하며, 그런 기본 데이터를 비교해 최적의 실행 계획을 수립하는 작업이 필요하다. 대부분의 DBMS에서는 옵티마이저가 이러..

    [MySQL] 함수 인덱스, 클러스터링 인덱스

    기존의 Real MySQL (5.0, 5.1 버전) 책을 너무 유익하게 봤는데, Real MySQL 8.0이 전면 개정판이 나와서... 설레는 마음에 보면서 개인적인 공부용으로 정리하고 있습니다. 역시 믿고 보는 Real MySQL... 👍 한번 사서 보시는 것을 강력 추천드립니다! 함수 기반 인덱스 일반적인 인덱스는 칼럼의 값 일부 또는 전체에 대해서만 인덱스 생성이 허용된다. 하지만 때로는 칼럼의 값을 변형해서 만들어진 값에 대해 인덱스를 구축해야 할 때도 있는데, 이러한 경우 함수 기반의 인덱스를 활용하면 된다. MySQL 서버는 8.0 버전부터 함수 기반 인덱스를 지원하기 시작했는데, MySQL 서버에서 함수 기반 인덱스를 구현하는 방법은 다음 두 가지로 구분할 수 있다. 가상 칼럼을 이용한 인덱..

    [MySQL] B-Tree 인덱스

    기존의 Real MySQL (5.0, 5.1 버전) 책을 너무 유익하게 봤는데, Real MySQL 8.0이 전면 개정판이 나와서... 설레는 마음에 보면서 개인적인 공부용으로 정리하고 있습니다. 역시 믿고 보는 Real MySQL... 👍 한번 사서 보시는 것을 강력 추천드립니다! B-Tree 인덱스를 통한 데이터 읽기 스토리지 엔진이 어떻게 인덱스를 이용해서 실제 레코드를 읽어 내는지에 대한 내용. (MySQL이 인덱스를 이용하는 대표적인 방법) 인덱스 레인지 스캔 대표적인 세 가지 방법 중 가장 빠른 방법 SELECT * FROM employees WHERE first_name BETWEEN 'AAA' AND 'BBB'; 인덱스 레인지 스캔은 검색해야 할 인덱스의 범위가 결정됐을 때 사용하는 방식...