Всем привет! Буквально сегодня весь день занимался проблемой медленной работы с базой данных. Немного вводной: есть корпоративный портал на битриксе. Живет он около 10 лет, соответственно мусора на нем накопилось очень-очень много. Таблица инфоблоков насчитывает около 500 тысяч элементов. И вот подошел момент, когда простые запросы к таблице инфоблоков (даже если писать их на чистом sql), результат которых должен быть под 100 записей длятся около 1-2 секунд, а если запрашивать пользовательские свойства, то и все 3-4. Примерный запрос: SELECT * FROM b_iblock_element WHERE IBLOCK_ID = 3 AND...
Сегодня расскажу о важном аспекте поддержания базы данных сайта в рабочем состоянии — оптимизация таблиц в базе данных. Как вам скорее всего известно, система управления базами данных MySQL позволяет создавать разные типы таблиц, но среди разработчиков сайтов 2 типа таблиц являются стандартами де-факто — это MyISAM и InnoDB. Об их оптимизации я и расскажу. Для MyISAM есть стандартное ключевое слово для оптимизации — OPTIMIZE. Команда для оптимизации выглядит как OPTIMIZE `название_таблицы`. Для InnoDB такой команды нет и для такого типа таблиц следует использовать конструкцию ALTER TABLE $table...