본문 바로가기

Study5

06.스토리지 엔진 - InnoDB 스토리지 엔진 6.3.1 MySQL 5.6 InnoDB XtraDB는 기본적으로 MySQL의 InnoDB 스토리지 엔진의 모든 기능을 그대로 유지하면서 추가저긍로 성능이나 확장성이 개선된 스토리지 엔진입니다. 그래서 XtraDB 스토리지 엔진을 이해하기 위해서는 MySQL에 내장된 InnoDB 스토리지 엔진의 기능들을 알고 있어야 합니다. 6.3.1.1 영구적인 통계정보 MySQL 5.6의 InnoDB에서는 이전버전과는 달리 각 테이블의 통계 정보를 테이블로 관리하도록 보완되었습니다. MySQL 5.5버전까지의 InnoDB에서는 통계 정보를 단순히 각 스토리지 엔진에서 단순히 메모리상에서 관리했었는데, 이는 매우 자주 변경되고 마스터와 슬레이브에서 각각 다른 쿼리 실행 계획을 만들어 낼 정도로 변덕이 심했습니다. 그래.. 2021. 7. 23.
4.4 옵티마이저 힌트 힌트의 사용법 MariaDB에서 옵티마이저 힌트는 종류별로 그 사용 위치가 정해져 있는데, 두가지 방법이 있습니다. 이 두가지 방법모두 잘못 사용할 경우 오류를 발생시키게 됩니다. 오라클 처럼 힌트가 주석의 일부로 해석되는 것이 아니라 SQL의 일부로 해석(설령 힌트가 주석안에 표기되었다 하더라도)되기 때문입니다. 사용법1 SELECT * FROM employees USE INDEX (primary) WHERE emp_no=10001; 사용법2 SELECT * FROM employees /*! USE INDEX (primary) */ WHERE emp_no=10001; 첫번째 예제에서는 별도의 주석 표기 없이 SQL 문장의 일부로 작성하는 방식이며, 두 번째 예제는 MariaDB에서 힌트를 위한 주석 표.. 2021. 6. 14.
4.3.10 Extra 컬럼(1) 쿼리의 실행계획에서 성능에 관련된 중요한 내용이 Extra컬럼에 자주 표시됩니다. const row not found 쿼리의 실행계획에서 const 접근 방식으로 테이블을 읽었지만 실제로 해당 테이블에 레코드가 1건도 존재하지 않으면 표시됩니다. 이런 메세지가 표시되는 경우에는 테이블에 적절히 테스트용 데이터를 저장하고 다시 한번 쿼리의 실행 계획을 확인해 보는 것이 좋습니다. Distinct MariaDB [employees]> explain -> select distinct d.dept_no from departments d,dept_emp de where de.dept_no=d.dept_no; +------+-------------+-------+-------+---------------+-----.. 2021. 6. 3.
04.3 실행 계획 분석 MariaDB에서 쿼리의 실행 계획을 확인하려면 EXPLAIN 명령을 사용하면 됩니다. EXPLAIN 명령만 사용하면 기본적인 쿼리 실행 계획만 보이지만 EXPLAIN EXTENDED나 EXPLAIN PARTITIONS 명령을 이용해 더 상세한 실행 계획을 확인할 수도 있습니다. 실행계획 예 explain select * from employees e where e.emp_no in (select emp_no from salaries where salary between 10 and 1000); +------+--------------+-------------+--------+-------------------+-----------+---------+---------------------------+--.. 2021. 6. 2.