MariaDB и MySQL — какую статистику использует оптимизатор, или Как обойтись без индексовБазы данных и системы хранения
Был одним из ведущих разработчиков MySQL с 1998 года. Сначала работал в MySQL AB, потом в Sun Microsystems. С 2009 года работал над MariaDB в Monty Program Ab и затем в MariaDB Corporation. За эти годы реализовал множество проектов практически во всех подсистемах и частях MySQL-сервера. Среди них такие, как полнотекстовый поиск, XA, HANDLER, библиотека вычислений с произвольной точностью, параллельное построение индексов в MyISAM, индексы в MERGE, plugin API, подключаемая аутентификация, хранение TIME, DATETIME и TIMESTAMP с микросекундной точностью, и другие. Автор книги «MySQL 5.1 Plugin Development».
Когда Ваш SQL-запрос попадает в сервер, задача оптимизатора — решить, как именно его выполнять, чтобы как можно быстрее получить результат. Принимая это решение, оптимизатор может смотреть на сами данные, но с многогигабайтными таблицами гораздо практичнее смотреть на разнообразную статистику, собранную по данным заранее. И чем лучше собранная статистика описывает реальные данные, тем ближе к реальности будут расчеты оптимизатора, тем точнее он будет выбирать самый быстрый способ выполнения запроса.
В этом докладе вы узнаете, какую именно статистику MariaDB и MySQL могут собирать, какими командами это делается, как настроить оптимизатор на ее использование, и как это может ускорить выполнение Ваших запросов.
И, конечно, как не нужно использовать индексы, когда достаточно адекватной статистики.