MySQL's Query Optimizer берет на себя время доступа к диску - PullRequest
2 голосов
/ 03 марта 2011

У меня нет опыта работы с MySQL, и мне было интересно, кто-нибудь может дать мне некоторое представление об оптимизаторе запросов MySQL и влиянии на стоимость обращений к диску при определении плана запроса для выполнения запроса. Меня интересует, может ли какая-либо статистика, собранная по времени доступа к диску, повлиять на план выполнения запросов для фиксированного набора запросов. В частности, при выполнении одного и того же набора запросов к одному и тому же образу базы данных, который находится на разных дисках с различной производительностью. (обратите внимание, что с точки зрения MySQL это одна и та же база данных; каталог данных просто находится на разных дисках, которые переключаются «под» MySQL без ведома). Может ли это изменение наблюдаемой производительности диска потенциально повлиять на решения плана запросов, которые оптимизатор запросов принимает во время выполнения? Я ожидаю, что есть много других вещей, связанных с самим SQL, которые оптимизатор мог бы сделать, прежде чем учитывать доступ к диску, но некоторые из вас имеют гораздо больший опыт работы с оптимизатором запросов, чем я.

Спасибо за помощь!

1 Ответ

1 голос
/ 28 июня 2011

Я не знаю, как оптимизировать физический доступ к вводу-выводу в MySQL.Однако оптимизатор запросов попытается свести к минимуму необходимые операции ввода-вывода (скажем, количество блоков), в которых выполняются запросы.

Разрыв в скорости между памятью и системой вторичного ввода-вывода настолько велик, чтоХранение эффективного кэша в памяти является ключевым вопросом производительности в большинстве систем реляционных баз данных.

Поэтому план запроса должен как можно меньше поддерживать требуемые операции ввода-вывода для запроса, каким бы быстрым ни было устройство.

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

...