Аналитические статьи

GSoC 2014 - оптимизация SQL в Joomla

Joomla

Области оптимизации

В рамках проекта особое внимание уделялось следующим областям:

  • Запросы, относящиеся к категориям
  • Запросы, относящиеся к материалам
  • Запросы, относящиеся к тегам, меню и языкам
  • Оптимизация вложенных наборов в качестве области исследования

Методы оптимизации

Для оптимизации применялись следующие методы:

  1. Применение подзапросов
  2. Добавление индексов
  3. Декомпозиция запросов
  4. Удаление ненужных вычислений

Результаты проекта

Оптимизация запросов

Полное описание всей работы по оптимизации и соответствующие результаты тестов вы может найти в Joomla Magazine. Непосредственно репоизторий проекта находится тут. Ниже приведены ссылки на пулл реквесты:

  1. PR#4106
  2. PR#4107
  3. PR#4112
  4. PR#4114
  5. PR#4115

Какие-то из них уже были влиты в ветку Joomla 3.4-dev, какие-то в процессе обсуждения и тестирования. Некоторые из них дают впечатляющие результаты.

Оптимизация вложенных наборов

Работа по оптимизации вложенных наборов (nested sets) в основном была направлена на то, чтобы дать возможность разработчикам компонентов проектировать таблицы базы данных без полей path, level и parent_id. Все эти значения могут легко вычисляться и не храниться в базе данных, ведь их обновление дается дорого в плане производительности. Идеей было создание коррелирующих подзапросов. Дляэ того были созданы три метода в классе JTableNested:

Будущее проекта

Этот проект является первым шагом в долгом путешествии по оптимизации базы данных Joomla. Еще есть запросы, которые требуют внимания, а исследовательская работа по вложенным наборам далека от завершения. И несомненно радует то, что студент, отвечающий за этот проект, продолжит свою работу в этом направлении.

Благодарность

Этот проект не мог существовать без двух наставников: Gunjan Patel и Nicola Galagano, которые постоянно поддерживали и вдохновляли студента. Хочется отметить и Mr. Ronni Christiansen (redComponent), который предоставил хостинг и тестовый сайт, а также Eli Aschkenasy, который оказал неоценимую помощь в технике оптимизации и определении узких мест SQL-запросов.

Dmitry Rekun
Работаю в банковской сфере, а с веб-разработкой (непосредственно с Joomla) столкнулся в 2007 году. Теперь это моё хобби и время от времени вторая работа. Какое-то время вёл свой блог, но решил попробовать работать в команде. И вот c 2012 года я здесь :)
timeweb

Заработок в сети

  • Sape - биржа ссылок