2

MySQL에 대한 배경 지식이 많지 않습니다. MySQL의 쿼리 최적화 프로그램에 대한 통찰력과 디스크 액세스 비용을 결정할 때의 영향에 대해 궁금합니다. 쿼리 실행을위한 쿼리 계획. 디스크 액세스 시간에 수집 된 통계가 고정 된 쿼리 집합에 대한 쿼리 실행 계획에 영향을 줄 수 있는지 여부에 관심이 있습니다. 특히 성능이 다른 여러 드라이브에있는 동일한 데이터베이스 이미지에서 동일한 쿼리 집합을 실행하는 경우. (MySQL의 관점에서 볼 때이 데이터베이스는 동일한 데이터베이스이며 데이터 디렉토리는 모르는 상태에서 MySQL의 "아래"로 전환되는 다른 드라이브에 상주 함). 관측 된 디스크 성능의 변화로 인해 쿼리 최적화 프로그램이 런타임에 수행하는 쿼리 계획 결정에 잠재적으로 영향을 미칠 수 있습니까? 디스크 액세스를 고려하기 전에 옵티마이 저가 수행 할 수있는 SQL 자체와 관련된 다른 많은 것들이있을 것이라고 기대하지만, 쿼리 최적화 프로그램을 다루는 경험이 많은 사용자가 있습니다.MySQL의 쿼리 최적화 프로그램이 디스크 액세스 시간에 걸리는 시간

도움 주셔서 감사합니다.

+0

불행히도 나는 그것을 확인하는 소스하지 않은하지만 난 그런 통계는 MySQL이 수집되지 않습니다 거의 확신합니다. 내가 아는 한, mysqlperformanceblog.com에 SSD 드라이브에 대한 MySQL 옵티 마이저의 구식 접근에 관한 글이있었습니다 (그들은 MySQL 소스에서 하드 코딩 된 임의 I/O 쓰기/읽기 비용을 언급했습니다). – matt

답변

1

MySQL의 pyhsical I/O 액세스 최적화에 대해 잘 모릅니다. 그러나 쿼리 최적화 프로그램은 쿼리를 실행하는 데 필요한 I/O (예 : 블록 수)를 최소화하려고 시도합니다.

메모리와 보조 I/O 시스템 간의 속도 차이가 너무 커서 메모리의 유효 캐시를 유지하는 것이 대부분의 관계형 데이터베이스 시스템에서 핵심적인 성능 문제입니다.

따라서 쿼리 계획은 필요한 I/O를 가능한 적은 쿼리로 유지해야하지만 장치는 빠릅니다.

<Query Result> <--[Logical I/O]-- <Main Memory> <--[Physical I/O]-- <Secondary I/O System>

+0

글쎄, 쿼리 최적화 프로그램은 여전히 ​​디스크 입출력에 대한 많은 가정을 필요로합니다. 적어도 이전 규칙은 "행 중 1/3 이상이 where 절로 적중 된 것으로 보이면 인덱스를 사용하지 않고 대신 전체 테이블 스캔을 수행합니다" "x 순차 읽기 블록이 더 빠릅니다 y 블록의 무작위 접근 "을 의미합니다. 나는 쿼리 계획의 다른 부분도 달라야한다고 확신한다. –