Редактор темы

Реклама
Реклама

Оптимизация запросов в бд для мультикатегорий

DLEPlugins

Кодер
Регистрация
29 Ноя 2015
Сообщения
1.601
Рейтинг реакций
968
Баллы
113
1/3
Автор темы
В процессе работы над одним интересным модулем заметил одну закономерность.
Когда задействую модуль, контент начинает формироваться и выводиться быстрее.
Немножко поэкспериментировал и решил поделиться этим решением с вами 🙂
Скорость обработки запроса увеличивается почти в 10 раз. Проверено опытным путем.

Установка
Открыть файл engine/engine.php
Найти код:
PHP:
                    $where_category = "category = '{$get_cats}'";
               
                }
           
            }

После него вставить:
PHP:
            $db->query("SELECT id FROM ".PREFIX."_post WHERE {$where_category} AND approve=1" . $where_date);
            $ids = array();
            while($r = $db->get_row()) $ids[] = $r['id'];
            if(count($ids)) $ids = implode(',',$ids);
            else $ids = 0;
            $where_category = "id IN ($ids)";

Вот и все 🙂

Почему стоит ставить этот хак даже не смотря на включенный кеш?
1. Кеш все же периодически чистится.
2. В DLE до 11 версии кешируются только первые 6 страниц навигации. В 11 версии уже 11 страниц. Но все равно, все остальные страницы выводятся без кеша.

Версия DLE: любая

Автор: Олег Александрович a.k.a. Sander
 
Не понял сути, страницы быстрее грузятся или что? На хост нагрузка увеличивается?
 
Проверено опытным путем.
Каким?
 
Автор темы
Не понял сути, страницы быстрее грузятся или что? На хост нагрузка увеличивается?
на хост нагрузка уменьшается. скорость открытия страниц возрастает до 10 раз.
 
Автор темы
Проверено опытным путем.
Каким?
Для начала покажу результаты своих замеров на 2х тестовых сайтах.
Один с 100000 записями, на локалке. И второй - 3000 записей на хостинге.
Категорий 150шт на обоих сайтах с уровнями вложенности до 3го включительно.
Замеры производятся только на сами запросы в БД. Все единицы измерения в секундах.


Локалхост
Каждая новость отмечена в 4х разных категориях.
Ситуация №1. Родительская категория, в ней в общей сложности около 80 подкатегорий, 96430новостей.
Стандартный вывод:
3.678
3.704
3.722
3.713
3.665

С помощью хака:
1.990
2.064
2.007
2.006
1.996
Не слабо, разница почти в 2 раза. Продолжим замеры.


Ситуация №2. Категория с подкатегорями, 17620 новостей.
Стандарт:
2.128
2.115
2.134

Хак:
0.847
0.848
0.864
Прирост производительности уже более чем в 2 раза.


Ситуация №3. Категория без подкатегорий, 2730 новостей
Стандарт:
1.630
1.639
1.626

Хак:
0.078
0.077
0.082
Ощутимо, не так ли. Хак работает более чем в 20 раза быстрее.
Теперь проведем аналогичные замеры, но уже на хостинге с 3000 новостями.



Хостинг
Каждая новость отмечена в среднем в 2-3х категориях.
Ситуация №1. Родительская категория, в ней в общей сложности около 80 подкатегорий, 660новостей.
Стандартный вывод:
0,1643
0,1718
0,1635
0,1672

Хак:
0,0116
0,0072
0,0113
0,0068
Удивительно, не так ли. Более чем в 10 раз!


Ситуация №2. Категория с 5ю подкатегорями, 260 новостей.
Стандарт:
0,0364
0,0337
0,0236
0,0224

Хак:
0,0030
0,0038
0,0032
0,0048
Стабильно, быстрее в 10 раз.


Ситуация №3. Категория без подкатегорий, 90 новостей
Стандарт:
0,0103
0,0170
0,0097

Хак:
0,00142
0,00144
0,00151
Все так же, прирост в 5-10 раз.
 
К сожалению на посещаемом сайте данный хак оказался не столь производительным. Из-за повышенной длинны запроса он стал потреблять на порядок больше оперативной памяти.
 
так то лучше)
 
А как ты делаешь замеры скорости БД?
 
почему у меня последняя и предпоследняя кнопки пагинации редиректят на главную а, ни у кого такого косяка нет и как исправить ? ) @DomiTori, подскажи )
 
Автор темы
почему у меня последняя и предпоследняя кнопки пагинации редиректят на главную а, ни у кого такого косяка нет и как исправить ? ) @DomiTori, подскажи )
После установки хака? У меня все норм
 
После установки хака? У меня все норм
нет, я не по теме спросил а просто )) помоему после геймерского сео пака хрень появилась, щас буду разбираться, мне ток вчера показали на такую беду
 
Автор темы
нет, я не по теме спросил а просто )) помоему после геймерского сео пака хрень появилась, щас буду разбираться, мне ток вчера показали на такую беду
Так бы сразу и сказал. После геймерского пака не работает навигация, проверено мною. Там есть пункт 404 на несуществующие страницы навигации, в нем дело. Из этого пака можно поставить только пункт 1
 
Так бы сразу и сказал. После геймерского пака не работает навигация, проверено мною. Там есть пункт 404 на несуществующие страницы навигации, в нем дело. Из этого пака можно поставить только пункт 1
а ты последний его ставил ? недавно он вроде чето новое выложил
честно говоря убирать его лень, столько файлов снова обходить ппц
 
Автор темы
а ты последний его ставил ? недавно он вроде чето новое выложил
честно говоря убирать его лень, столько файлов снова обходить ппц
полторы недели назад. Да ставил, ситуация такая же.
 

Похожие темы Последние темы Популярные темы

Назад
Сверху