Негативное влияние счетчиков просмотра элементов инфоблока на производительность БД

Негативное влияние счетчиков просмотра элементов инфоблока на производительность БД

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


Мы с нетерпением ждём вашего ORM и Hightload инфоблоков, но пока их нет и даже если они вдруг будут, просьба поставить в ближайшие таски такую задачку как вынос "статистики" в отдельные таблицы.
CIBlockElement::CounterInc - вызывется например  в компоненте news.detail и производит UPDATE таблицы b_iblock_element, что мешает эффективно использовать кэш mysql.

Каждый просмотр любого из элементов, хранящихся в одной таблице(в отличии от свойств) - блокируют на чтение, в случае с MyIsam всю таблицу или с InnoDB её часть. Так как большая часть информации обычно хранится в инфоблоках, это не лучшим образом сказывается на скорости работы.

Просто переписав CIBlockElement::CounterInc и CIBlockElement::GetList на работу с SHOW_COUNTER хранящимcя в другой таблице, мы в разы укорили взаимодействие с БД, за счёт кэша запросов.
Результат даже без замеров "синтетическими" тестами, виден сразу "на глаз". LA резко падет, кэш запросов растёт, отклик страницы ДАЖЕ "визуально" увеличивается.

Помимо счётчика просмотров элементов инфоблоков, есть не менее грузящая операция фиксирования показов баннеров.

Пожалуйста не пожалейте времени и выпустите апдейт для "Инфоблоки 2.0" и модуля "Реклама", с отдельными таблицами для статистических данных.

 

 

Источник: https://dev.1c-bitrix.ru/community/forums/messages/forum17/topic57531/message301388/#message301388

Назад в раздел

Подписаться на новые материалы раздела:














CAPTCHA