Лебедь, рак и щука современных CMS

Скорость, память и БД - три величены, которые постоянно тянут одеяло сервера на себя. Хотите, чтобы система летала - будет кушаться много памяти. Хотите, чтобы было меньше запросов к БД? Получите меньшую скорость или большую потребляемую память.

Конечно, речь здесь не идёт о простых системах, в котрых рост потребления памяти, увеличения скорости загрузки и количества запросов к БД растёт одновременно. Речь пойдёт об оптимизации уже существующей ORM системы, которая занимается приобразованиями реляционных БД в объектную модель, которая вяжется с архитектурой Е5.

В погоне за оптимизацией запросов к базе данных, было принято решение ввести кеширующие массивы, которые запоминали бы нужные результаты. Да - количество запросов действительно уменьшилось. Если в самом начале у нас могли быть тысячи запросов, то теперь на самых сложных ресурсах, в которых используется вывод 3-5 модулей на 1 странице одновременно, максимум используется не более 300 запросов (но и это мы считаем чрезмерным количеством запросов). Уменьшить ещё меньше можно, но нужно понимать, что с уменьшением запросов (например, за один раз мы будем охватывать целый спектр таблиц или сразу все строки нужной таблицы) мы получим очень резкое увеличение скорости работы и потребляемой ОЗУ.

В итоге, средний сайт использует от 50 до 150 запросов для загрузки одной страницы (без использования кеширования). Но кеширующие-массивы (кеширующие информацию, полученную из БД для последующего использования только для текущего рендеринга страницы) несли в себе сюрпризы. На некоторых сайтах, для того, чтобы загрузить 1 страницу, пхп скрипт запрашивал у сервера аж 50 мегабайт, что, согласитесь, может себе позволить далеко не каждый хостинг.

Кроме кеширующих массивов, было решено подойти иначе к функции ORM - получение строк. Она была разделена на две части - грузить все строки по их родителю и грузить все строки в рамках текущей таблицы. Оба метода таили в себе массу подводных камней. Некоторые функции административного юнита перестали работать, некоторые страницы админки требовали до 120мб ОЗУ и делали по 1000 запросов. В конце-концов была проведена тщательная аналитика системы (deep debug) и все проблемы были устранены. Осталась только одна проблема - избыточные запросы к БД.

Автор: E5 Developer

Дата: 16 августа 2012



Добавить комментарий

Имя

E-mail

Комментарий

Контрольный вопрос:
Сколько будет: 19+2-5


 
Наши работы
Массажные кровати LongLife

Благотворительная организация Преображение

Автомобили из Кореи СК-МОТОРС

Мобильные бани МОБИБА

Европейские ограждения Евростандарт

Портал недвижимости Аренда 911

Сеть саун Кантри

Строительная компания Сибирский Стиль

Автомобили из Кореи СК-МОТОРС

Арбитражный суд НСО

Сервис-кухня Ланч

Ремонт и обслуживание компьютеров ПК-Сервис

Интернет-каталог велосипедов и детской мебели Дами

 

Главная О студии Расценки Портфолио Статьи Контакты