Почему первый запрос выполняется долго?

Может быть кто сталкивался...
При загрузке любого контроллере/экшена, первый запрос к БД выполняется 700-900ms, при чем все запросы на SELECT выполняются от 0,1ms до максимум 3,7ms примерно, а вот SHOW (тип запроса, как дебагер обзывает) запросы - первый выполняется 700-900ms и остальные по 70-80ms.

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

Логи пробовал отключать все, ни чего не изменилось.
Грешил на соединение, думал долго устанавливается, но нет 0,3ms.

Как быть?
  • Вопрос задан
  • 523 просмотра
Пригласить эксперта
Ответы на вопрос 1
copist
@copist
Empower people to give
Active Record пытается прочесть данные о таблицах, наверное.
Пройдись по пунктам статьи по оптимизации для Yii2 www.yiiframework.com/doc-2.0/guide-tutorial-perfor... в частности кэширование схем данных и запросов.

Для Yii1 не могу найти такой же. Был раньше, но в гуглопоиске покрылся пылью.

Кэширование схемы данных для ActiveRecord
return array(
    …
    'components'=>array(
        …
        'cache'=>array( // ... компонента для работы с кэшем
            'class'=>'CDbCache',
        ),
        'db'=>array( // ... компонента для работы с БД
            // ... настройки компоненты
            'schemaCachingDuration'=>3600, // <-- кэшировать схему данных для ActiveRecord на 1 час
        ),
    ),
);


Ещё есть вариант, используя кэширование, подавить создание коннектов к БД, если они вообще не нужны: copist.ru/blog/2014/09/29/high-speed-yii-database
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы