Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » MySQL » Запрос к БД занимает мног овремени

Запрос к БД занимает мног овремени


     10.01.2014    Оптимизация запросов    Все вопросы » MySQL    4278

вопрос
Страница раздела грузится 2,5 секунды. А нужно 1 сек, в идеале 0,5.

<!-- DataLife Engine Copyright SoftNews Media Group (http://dle-news.ru) -->

<!-- Время выполнения скрипта 2.45019 секунд -->
<!-- Время затраченное на компиляцию шаблонов 0.00896 секунд -->
<!-- Время затраченное на выполнение MySQL запросов: 2.39396 секунд -->
<!-- Общее количество MySQL запросов 6 -->
<!-- Затрачено оперативной памяти 4.44 MB -->
<!-- Для вывода использовалось сжатие gzip -->
<!-- Общий размер файла: 58370 байт После сжатия: 14143 байт -->


В базе 777 тыс постов. Мультикатегории включены. Файловый кеш. Работает на выделенном сервере.

Интересует вопрос. Как оптимизировать запросы. Существуют ли какие-то инструменты для выявления медленных запросов? чтобы знать что оптимизировать.

Ответил: ПафНутиЙ


Поставьте модуль ShowStat и посмотрите по логам.
Выделите медленные запросы, а там уже можно и оптимизацией заниматься.
Но БД у вас конечно очень большая.

5 комментариев

Webstrannik
Юзер

Webstrannik - 10 января 2014 15:04 -

MySQL содержит встроенный механизм кэширования запросов, который, не включен по умолчанию.
#################################################
Включаем кэширование запросов в mysql
#################################################

Для получения состояния о кешировании, выполните в phpMyAdmin запрос:
--------------------------------------------
show variables like 'query_cache%';
--------------------------------------------
Если query_cache_size = 0, значит кэш НЕ включен.
--------------------------------------------
В результате вы получите таблицу примерно следующего содержания:
+-------------------------------+---------+
| Variable_name                 | Value   |
+-------------------------------+---------+
| query_cache_limit             | 1048576 |
| query_cache_min_res_unit      | 4096    |
| query_cache_size              | 0       |
| query_cache_type              | ON      |
| query_cache_wlock_invalidate  | OFF     |
+-------------------------------+---------+
Где query_cache_size показывает размер оперативной памяти выделенного под кеш запросов (если 0 то кен не используется).
Для того чтобы включить кэш запросов и выделить под него 256 мегабайт памяти необходимо редактировать:
---------------------------------------------
nano /etc/my.cnf
---------------------------------------------
добавляем строчки
(в секцию [mysqld]):

query_cache_size = 268435456
query_cache_type=1
query_cache_limit=1048576
--------------------------------------------
Для проверки состяния кеша необходимо выполнить в phpMyAdmin следующий запрос:
--------------------------------------------
SHOW GLOBAL STATUS LIKE 'Qcache%';
---------------------------------------------
в результате вы получите вот такую табличку
+-------------------------------+-----------+
| Variable_name                 | Value     |
+-------------------------------+-----------+
| Qcache_free_blocks            | 1         |
| Qcache_free_memory            | 257336160 |
| Qcache_hits                   | 1855      |
| Qcache_inserts                | 3239      |
| Qcache_lowmem_prunes          | 0         |
| Qcache_not_cached             | 16        |
| Qcache_queries_in_cache       | 2291      |
| Qcache_total_blocks           | 4664      |
+-------------------------------+-----------+
где Qcache_free_memory размер свободной памяти кеша
Qcache_hits количество запросов которые отданных из кеша
Qcache_lowmem_prunes количество освобожденной памяти из за нехватки кеша
в идеале должно быть 0, если это не так, то значит памяти кеша вам не хватает и его нужно увеличить.
#################################################

Webstrannik
Юзер

Webstrannik - 10 января 2014 15:28 -

ps. рестарт mysql не забудьте для подхвата нового конфига

ukradyga
Юзер

ukradyga - 10 января 2014 17:37 -

Спасибо, очень хороший модуль. А если его не отключать. Он не сильно тормозит сайт, то что mysql.class раскомментирован?

PS Как я и думал, придется мультикатегории отключить(( regexp очень жесткий запрос(((

ПафНутиЙ
Админ

ПафНутиЙ - 10 января 2014 19:25 -

Ну если жить не мешает - не отключайте)

Каков вопрос - таков и ответ. Просто помните об этом.

dj-avtosh
PHP-developer

dj-avtosh - 10 января 2014 19:14 -

Могу помочь с оптимизацией

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

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

 23.04.2014 fh79655l123  MySQL
 27.04.2014 Miracle  MySQL
наверх