Оптимизация SQL-запросов в Tarantool 2.0Туториалы
С выходом версии 2.0 в Tarantool появилась поддержка языка запросов SQL.
Как известно, языки запросов являются декларативными. Это означает, что пользователь "описывает” данные, которые хочет получить, но не может вмешиваться в структуру выполнения запроса.
Выбор алгоритма оптимального выполнения запроса в общем случае является полиномиально неразрешимой задачей. Однако, разнообразие эвристик позволяет получить приемлемую аппроксимацию.
В ходе доклада мы рассмотрим жизненный путь запроса: от парсинга строки до его непосредственного выполнения. Подробно остановимся на работе планировщика запросов, основанного как на cost-based-подходе, так и на некоторых rule-based-преобразованиях. Посмотрим на низкоуровневую виртуальную машину, обеспечивающую выполнение запроса. Разберем, какую статистику собирает планировщик, и как она используется. Объясним, как переписать запрос, чтобы оптимизатор мог выбрать более быстрый план выполнения. Рассмотрим существующие эвристики и ситуации, когда они применимы.