AJAX на форуме

#16 8 августа 2012 в 17:08
9.98973846436E-5 = 9.98973846436*(10 в -5 степени)
#17 8 августа 2012 в 17:44
Посмотрел лог, получается где есть NSLeft или NSRight то там тормоза, это что такое NSLeft, NSRight?
SELECT NSLeft, NSRight FROM cms_forums WHERE id='1011' ORDER BY id ASC LIMIT 1 8.08238983154E-5 сек.
#18 8 августа 2012 в 18:20
8E-5 = 0.00008 — это очень и очень быстро
Надо искать запросы, которые красным отмечены, если они форумные, значит хост подтормаживает.
#19 8 августа 2012 в 18:25
блин точно, затупил чтото, на 10 в минус не обратил внимания
#20 8 августа 2012 в 18:46
SELECT p.pubdate, p.id as post_id,
u.id as uid, u.nickname as author,
u.login as author_login,
t.title as threadtitle, t.id as threadid
FROM cms_forum_posts p
LEFT JOIN cms_forum_threads t ON t.id = p.thread_id AND t.is_hidden=0
INNER JOIN cms_forums f ON f.id = t.forum_id
LEFT JOIN cms_users u ON u.id = p.user_id
WHERE (f.NSLeft >= 144 AND f.NSRight <= 145)
ORDER BY p.id DESC
LIMIT 1 0.282637119293 сек.
этот запрос самый длительный получается
#21 8 августа 2012 в 19:05
Сколько ж там форумов, что в сумме 20 секунд выходит? И это запрос последнего сообщения, его никак не ускорить.
Индексы надеюсь стоят?
#22 8 августа 2012 в 19:24
все по умолчанию как поставилось из установочного пакета
а как там закешировать форумы?
главные категории же не меняются, на них можно хоть на месяц кеш делать smile

как я понимаю форум на основе универсального каталога и непонятно тогда, что и в каталоге будут тормоза при 50 категориях например?
#23 8 августа 2012 в 20:11

как я понимаю форум на основе универсального каталога и непонятно тогда, что и в каталоге будут тормоза при 50 категориях например?

eoleg
Да ладно...
Достаточно сделать файловое кеширование, файлы чистить при изменениях на форуме(добавили пост, тему, аль удалили). Кеш блоков у меня чистится каждые 5 минут, дабы даты менялись. Форум не кешировал, ибо нет нужды. Да и ещё на бежете(хостинг) мускул кеширует тоже. Поэтому первое открытие форума 0.3сек., последующие 0.03сек.
#24 9 августа 2012 в 16:53
Вот что интересно
я пересоздаю индексы в cms_forums
id, NSLeft, NSRight
запросы выполняются примерно в 4 раза быстрее — 10 сек
запускаю в задачах крон оптимизацию таблиц и после оптимизации — 40 сек.
#25 9 августа 2012 в 19:11


Вот что интересно
я пересоздаю индексы в cms_forums
id, NSLeft, NSRight
запросы выполняются примерно в 4 раза быстрее — 10 сек
запускаю в задачах крон оптимизацию таблиц и после оптимизации — 40 сек.

eoleg
вот так номер. после оптимизации индексы слетают?
#26 9 августа 2012 в 20:11
эти запросы через консоль выполняются быстро а при открытии всего форума медленно
SELECT t.id
FROM cms_forum_threads t
INNER JOIN cms_forums f ON f.id = t.forum_id AND f.NSLeft >= '2' AND f.NSRight <= '7' AND f.published = 1 0.113020896912 сек.

SELECT p.id
FROM cms_forum_posts p
INNER JOIN cms_forum_threads t ON t.id = p.thread_id
INNER JOIN cms_forums f ON f.id = t.forum_id AND f.NSLeft >= '2' AND f.NSRight <= '7' AND f.published = 1 0.296095132828 сек.


этот всегда медленно
SELECT p.pubdate, p.id as post_id,
u.id as uid, u.nickname as author,
u.login as author_login,
t.title as threadtitle, t.id as threadid
FROM cms_forum_posts p
LEFT JOIN cms_forum_threads t ON t.id = p.thread_id AND t.is_hidden=0
INNER JOIN cms_forums f ON f.id = t.forum_id
LEFT JOIN cms_users u ON u.id = p.user_id
WHERE (f.NSLeft >= 2 AND f.NSRight <= 7)
ORDER BY p.id DESC
LIMIT 1 0.486695051193 сек.
как их можно оптимизировать?
#27 9 августа 2012 в 22:27
По моему, при выводе поста, в выполняемых запросах ошибочно создается условие выборки.
При обьединении cms_forums+cms_forum_threads+cms_users, выбрать f.NSLeft >= 26 AND f.NSRight <= 27, но при этом выбрать id и тайтлы f.NSLeft >= 28 AND f.NSRight <= 29
Вот полный запрос — вывод одного поста ( взято с #8 -скрин eoleg) :
#28 10 августа 2012 в 10:05
Решил я вроде свою проблему, может пригодится кому
Почему то индексы в запросах не работали, хотя они есть — проверял из консоли мускуля, все индексы на месте smile
Пришлось явно указать в запросах какие индексы испльзовать
/components/forum/includes/forumcore.php

$sql = "SELECT p.pubdate, p.id as post_id,
u.id as uid, u.nickname as author,
u.login as author_login,
t.title as threadtitle, t.id as threadid
FROM cms_forum_posts p
LEFT JOIN cms_forum_threads t USE INDEX (forum_id) ON t.id = p.thread_id AND t.is_hidden=0
INNER JOIN cms_forums f USE INDEX (category_id) ON f.id = t.forum_id
LEFT JOIN cms_users u ON u.id = p.user_id
WHERE (f.NSLeft >= {$forumNS['NSLeft']} AND f.NSRight <= {$forumNS['NSRight']})
ORDER BY p.id DESC
LIMIT 1";

/components/forum/model.php
// ========================================================================================================= //

public function getCountThreadsFromForum($left_key, $right_key) {

$sql = "SELECT t.id
FROM cms_forum_threads t
INNER JOIN cms_forums f USE INDEX (PRIMARY) ON f.id = t.forum_id AND f.NSLeft >= '$left_key' AND f.NSRight <= '$right_key' AND f.published = 1";

$result = $this->inDB->query($sql);

return $this->inDB->num_rows($result);

}
// ========================================================================================================= //
// ========================================================================================================= //

public function getCountPostsFromForum($left_key, $right_key) {

$sql = "SELECT p.id
FROM cms_forum_posts p
INNER JOIN cms_forum_threads tUSE INDEX (id) ON t.id = p.thread_id
INNER JOIN cms_forums f USE INDEX (PRIMARY) ON f.id = t.forum_id AND f.NSLeft >= '$left_key' AND f.NSRight <= '$right_key' AND f.published = 1";

$result = $this->inDB->query($sql);

return $this->inDB->num_rows($result);

}
после этого мой форум стал открыватся первый раз не 48 секунд а 3 секунды
а следующие открытия 0.3 сек
сегодня вечером еще попробую с запросами поэксперементировать.
при критике прошу учесть что я не программист и не дизайнер.
А может я вообще все неправильно сделал?
#29 10 августа 2012 в 11:10
Похоже, что мускул настроен так криво на хосте. У меня всегда и везде индексы сами нормально работали scratch
#30 10 августа 2012 в 11:35

Похоже, что мускул настроен так криво на хосте.

lokanaft
у меня свой хостинг и мускуль оптимально настроен, с другими сайтами и цмс проблем небыло, возможно у меня чтото в базе слетело но я не смог найти ничего криминального
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.