Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » MySQL » При добавлении новостей с сайта, идёт большая нагрузка на сервер, что делать?

При добавлении новостей с сайта, идёт большая нагрузка на сервер, что делать?


     11.05.2015    Все вопросы » MySQL    3166

вопрос
Хостер сообщил о высокой нагрузке на сервер при добавлении новостей с сайта, форма добавления состоит в основном из доп полей.
Вот что он мне написал:
Ваш сайт начал генерировать большое количество медленных запросов к mysql. Все эти запросы объединяет наличие regexp при выборе строк. Использование regexp в запросах mysql почти всегда приводит к высокой нагрузке на сервер и намного более длительному выполнению этих запросов по сравнению с использованием условия “LIKE”.
Ниже примеры запросов из лога медленных:
SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM dle_post p LEFT JOIN dle_post_extras e ON (p.id=e.news_id) WHERE category regexp '[[:<:]](11)[[:>:]]' AND approve=1 AND date < '2015-05-11 11:27:35' ORDER BY date DESC LIMIT 0,4;



SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM dle_post p LEFT JOIN dle_post_extras e ON (p.id=e.news_id) WHERE category regexp '[[:<:]](1|2|3|4|5|6|7|8|9|10|11|12|13|14|21|22|23|708|709|710|711|712|713)[[:>:]]' AND p.date >= '2015-05-11 11:24:16' - INTERVAL 7 DAY AND p.date < '2015-05-11 11:24:16' AND approve=1 ORDER BY news_read DESC LIMIT 0,7;



SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM dle_post p LEFT JOIN dle_post_extras e ON (p.id=e.news_id) WHERE category regexp '[[:<:]](1|2|3|4|5|6|7|8|9|10|11|12|13|14|21|22|23|708|709|710|711|712|713)[[:>:]]' AND p.date >= '2015-05-11 11:31:29' - INTERVAL 7 DAY AND p.date < '2015-05-11 11:31:29' AND approve=1 ORDER BY news_read DESC LIMIT 0,7;


Для ускорения работы сайта, рекомендуем исключить использование regexp из запросов.
Что это за запрос такой - regexp, и можно ли от него избавиться? И как это сделать?

Ответа пока нет


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

Sander
PHP-developer

Sander - 11 мая 2015 12:52 -

От regexp избавиться нельзя.
712|713 - не нравятся мне эти большие числа. Это у вас более 700 категорий на сайте?
Предоставленные запросы никак не могут быть медленными.
Судя по запросам у вас используется несколько блоков {custom}. И если в некоторых перечислены все 700 категорий, то вот такие блоки могут создавать нагрузку.
И нагрузка идет не при добавлении новостей, а после очистки кеша.

А вот что делать. Зависит от посещаемости сайта и от тарифного плана. Возможно придется сменить хостинг.

SanDev.pro - мой блог.

Telegram: @sandev
Skype: Sander8804

follor
Юзер

follor - 11 мая 2015 13:11 -

Sander, да, категорий на сайте около 1000, но эти категории никак не прописаны в форму addnews.html, категории выводятся у меня при помощи select
<select name="" id="category" class="select" onchange="onCategoryChange(this)" title="" required>    
                <option value=""></option>
                <option value="25">Название категории</option>
              </select>

Насчёт custom с прописью всёх категорий, то он у меня только один, находится на главной сайта, и в этих категориях новостей на данный момент нет, только одна.
{custom category="33-707" template="custom_kat" aviable="main" from="0" limit="4" cache="no" order="date"}


Печально конечно, если проблема не решится, буду рассматривать вариант смены хостинга. Посещалка не большая, около 400 уников за сутки

Sander
PHP-developer

Sander - 11 мая 2015 15:04 -

Вот такой запрос у вас выполняется КАЖДЫЙ раз при открытии главной страницы.
SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM dle_post p LEFT JOIN dle_post_extras e ON (p.id=e.news_id) WHERE category regexp '[[:<:]](33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139|140|141|142|143|144|145|146|147|148|149|150|151|152|153|154|155|156|157|158|159|160|161|162|163|164|165|166|167|168|169|170|171|172|173|174|175|176|177|178|179|180|181|182|183|184|185|186|187|188|189|190|191|192|193|194|195|196|197|198|199|200|201|202|203|204|205|206|207|208|209|210|211|212|213|214|215|216|217|218|219|220|221|222|223|224|225|226|227|228|229|230|231|232|233|234|235|236|237|23
8|239|240|241|242|243|244|245|246|247|248|249|250|251|252|253|254|255|256|257|258|259|260|261|262|263|264|265|266|267|268|269|270|271|272|273|274|275|276|277|278|279|280|281|282|283|284|285|286|287|288|289|290|291|292|293|294|295|296|297|298|299|300|301|302|303|304|305|306|307|308|309|310|311|312|313|314|315|316|317|318|319|320|321|322|323|324|325|326|327|328|329|330|331|332|333|334|335|336|337|338|339|340|341|342|343|344|345|346|347|348|349|350|351|352|353|354|355|356|357|358|359|360|361|362|363|364|365|366|367|368|369|370|371|372|373|374|375|376|377|378|379|380|381|382|383|384|385|386|387|388|389|390|391|392|393|394|395|396|397|398|399|400|401|402|403|404|405|406|407|408|409|410|411|412|413|414|415|416|417|418|419|420|421|422|423|424|425|426|427|428|429|430|431|432|433|434|435|436|437|43
8|439|440|441|442|443|444|445|446|447|448|449|450|451|452|453|454|455|456|457|458|459|460|461|462|463|464|465|466|467|468|469|470|471|472|473|474|475|476|477|478|479|480|481|482|483|484|485|486|487|488|489|490|491|492|493|494|495|496|497|498|499|500|501|502|503|504|505|506|507|508|509|510|511|512|513|514|515|516|517|518|519|520|521|522|523|524|525|526|527|528|529|530|531|532|533|534|535|536|537|538|539|540|541|542|543|544|545|546|547|548|549|550|551|552|553|554|555|556|557|558|559|560|561|562|563|564|565|566|567|568|569|570|571|572|573|574|575|576|577|578|579|580|581|582|583|584|585|586|587|588|589|590|591|592|593|594|595|596|597|598|599|600|601|602|603|604|605|606|607|608|609|610|611|612|613|614|615|616|617|618|619|620|621|622|623|624|625|626|627|628|629|630|631|632|633|634|635|636|637|63
8|639|640|641|642|643|644|645|646|647|648|649|650|651|652|653|654|655|656|657|658|659|660|661|662|663|664|665|666|667|668|669|670|671|672|673|674|675|676|677|678|679|680|681|682|683|684|685|686|687|688|689|690|691|692|693|694|695|696|697|698|699|700|701|702|703|704|705|706|707)[[:>:]]' AND p.date < '2015-05-11 11:31:29' AND approve=1 ORDER BY date DESC LIMIT 0,4;

Зачем? Зачем вы отключили кеширование??
cache="no"

Не удивительно, что у вас мускуль зашивается.

SanDev.pro - мой блог.

Telegram: @sandev
Skype: Sander8804

follor
Юзер

follor - 11 мая 2015 15:11 -

С кэшированием это да, не додумался его включить. Насёт этого огромного запроса да, понимаю что нагрузка появляется существенная, проверил уже путем отключения custom блока. Каков будет Ваш совет? Вообще исключить этот блок?

lutskboy
Эксперт

lutskboy - 11 мая 2015 15:25 -

Вот Это запрос
А категорий то зачем столько?

follor
Юзер

follor - 11 мая 2015 15:30 -

Категорий столько нужно для каталога

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

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

 05.09.2013 pro-erex  MySQL
 06.09.2013 pro-erex  MySQL
наверх