SQL — декларативный язык, основанный на реляционной алгебре — он имеет в качестве компонента оптимизатор запросов, преобразующий пользовательский ввод и находящий самый простой и быстрый способ выполнить запрос. Компоненты MySQL это те структурные элементы из которых состоит система. Эти элементы работают незаметно для пользователя обрабатывая простые SQL запросы, преобразуя их в команды низкого уровня.
Из каких структурных элементов состоит MySQL показано на схеме.
В реляционной теории существуют два языка из которых складывается SQL: DDL и DML.
DDL — data definition language: CREATE, DROP + INDEXES, VIEWS
DML — data manipulation language: INSERT, SELECT, DELETE, UPDATE
Фактически знание этого не требуется для написания запросов. Основные вопросы рассмотрены в рамках цикла статей по MySQL.
Компоненты MySQL, с которыми происходит работа на практике
+ Оптимизатор запросов — компонент, отвечающий за то, чтобы трактовать команду и найти лучший способ ее выполнить: максимально точно и быстро. Именно в командах всегда следует искать несовершенства если MySQL запросы выполняются долго.
Самостоятельно проанализировать запросы можно используя EXPLAIN, это дает возможность увидеть запрос так как его видит MySQL. Часто эффективно бывает добавить индексы.
OPTIMIZE TABLE — другой способ оптимизации, который можно использовать. Работает только с MyISAM и восстанавливает удаленные строки, а также производит сортировку индексов. Стоит иметь в виду, что OPTIMIZE TABLE на время работы блокирует таблицу для внесения изменений.
+ Кэш запросов (о кэше MySQL) — используется когда приложению, обслуживаемому сервером баз данных свойственно обрабатывать большое количество однотипных запросов.
За счет кэширования можно существенно «разгрузить» MySQL. Кэш не будет эффективным если данные генерируются постоянно и часто обновляются, также никакого положительного эффекта не будет если бОльшая часть запросов — запросы на изменение данных (INSERT, UPDATE, DELETE и т.п.).
+ Интерфейс — сам движок MySQL, их несколько — чаще всего используются InnoDB и MyISAM (сравнение). Они существенно различаются и в большинстве современных проектов используется InnoDB. Причина в отсутствии блокировки на уровне таблицы и, как следствие, более быстрой работы.
Доступные движки в MySQL:
MyISAM — является исторически самым распространенным интерфейсом и также широко используется.
Читайте про оптимизацию настроек MySQL, которая позволит добиться более эффективной работы сервиса.