Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) MySQL Запрос к БД занимает мног овремени

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


     10.01.2014    MySQL    1908

вопрос
Страница раздела грузится 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
3

53 | 27

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
3

53 | 27

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

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

ukradyga
5

8 | 1

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

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

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

ПафНутиЙ
1063

3392 | 2433

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

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

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

dj-avtosh
39

1479 | 390

dj-avtosh - 10 января 2014 19:14 - шашлычник

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

skype: elhan.isaev

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

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

 23.04.2014 fh79655l123  MySQL
 27.04.2014 Miracle  MySQL