vain Опубликовано 16 Марта 2006 Жалоба Поделиться Опубликовано 16 Марта 2006 SQL Total Time: 9.62377 for queriesэто ж неимоверно много форум грузится соответственно очень долго...так стало после апгрейда с 2.0.4...в режиме отладки виден запрос, который "кушает" кучу времени: SELECT * FROM ipb_members WHERE -172800 ORDER BY members_display_name ASCMySQL time: 7.566 кто-нибудь знает что можно сделать? анализ, починку и оптимизацию таблиц уже делал.заранее спасибо. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 redline99 Опубликовано 29 Октября 2008 Жалоба Поделиться Опубликовано 29 Октября 2008 (изменено) Эта же проблема на 2.3.5был сделан апргрейд с 2.1.7Кто знает в чем дело ? Изменено 29 Октября 2008 пользователем redline99 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 29 Октября 2008 Жалоба Поделиться Опубликовано 29 Октября 2008 Сколько зарегистрированных пользователй на форуме? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 redline99 Опубликовано 29 Октября 2008 Жалоба Поделиться Опубликовано 29 Октября 2008 ~5900Хостер(мастерхост), пишет что это тяжелый запрос, и если проблема не будет решена, отрубит sql. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Arhar Опубликовано 29 Октября 2008 Жалоба Поделиться Опубликовано 29 Октября 2008 послать их на юг, купить серверэто все равно, что писать, если вы не отрежете себе руку и ухо, мы вас посадим в тюрьму Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 29 Октября 2008 Жалоба Поделиться Опубликовано 29 Октября 2008 SELECT * FROM ipb_members WHERE -172800 ORDER BY members_display_name ASCMySQL time: 7.566 ~5900Хостер(мастерхост), пишет что это тяжелый запрос, и если проблема не будет решена, отрубит sql. Попробовал на живом форуме у другого хостера аналогичный запрос с лимитом 0, 6000: Запрос занял 0.2874 сек Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 redline99 Опубликовано 5 Ноября 2008 Жалоба Поделиться Опубликовано 5 Ноября 2008 Да сам запрос занимает мало времени, но вот после его отключения, время генерации страницы уменьшилось с 1-1.5с. , до 0.2-0.3с. Из-за этого пришлось отключить мод "Были онлайн сегодня". Наверное придется искать другое решение этой модификации...правда не знаю, существует ли. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Song Опубликовано 10 Ноября 2008 Жалоба Поделиться Опубликовано 10 Ноября 2008 ну ессесно у тебя селектом выдёргиваются все пользователи.Это в каком функционале в форуме такой запрос? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Sannis Опубликовано 10 Ноября 2008 Жалоба Поделиться Опубликовано 10 Ноября 2008 ну ессесно у тебя селектом выдёргиваются все пользователи.Это в каком функционале в форуме такой запрос?Из-за этого пришлось отключить мод "Были онлайн сегодня". Наверное придется искать другое решение этой модификации...правда не знаю, существует ли.И что самое интересное, выложенный здесь мод давал у меня другой запрос Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 redline99 Опубликовано 10 Ноября 2008 Жалоба Поделиться Опубликовано 10 Ноября 2008 (изменено) Мода два. http://www.ibresource.ru/db/663/ $this->ipsclass->DB->simple_construct(array('select' => '*', 'from' => 'members', 'where' => "id>0 AND last_activity>".time()-172800, 'order' => 'members_display_name ASC'));http://www.ibresource.ru/db/825/$this->ipsclass->DB->simple_construct(array('select' => 'id, name, members_display_name, last_activity, mgroup', 'from' => 'members', 'where' => "id>0 AND last_activity>'time()-86399'", 'order' => 'last_activity DESC')); Откуда соответственно вытекают 1) SELECT * FROM ipb_members WHERE -172800 ORDER BY members_display_name ASC 2) SELECT id, name, members_display_name, last_activity, mgroup FROM ibf_members WHERE id>0 AND last_activity>'time()-86399' ORDER BY last_activity DESC У меня стоял 1-ый. Но впринципе, со вторым они похожи. не знаю как хостер отреагирует на другой запрос. Возможно ли создание этого мода каким-либо другим методом ? Изменено 10 Ноября 2008 пользователем redline99 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Sannis Опубликовано 10 Ноября 2008 Жалоба Поделиться Опубликовано 10 Ноября 2008 1. Сделать индекс по ibf_members.last_activity(или id+last_activity, это уже нужно проверять), если его не было.2. Вас не смутило, что в запросе есть time()-172800, а в сообщении хостера просто WHERE -172800. Что-то мне кажется, что либо time() не было у вас в коде, либо эта функиция(о чудо!) всегда возвращала нуль. А это уже повод бить хостера Откуда соответственно вытекают1) SELECT * FROM ipb_members WHERE -172800 ORDER BY members_display_name ASC 2) SELECT id, name, members_display_name, last_activity, mgroup FROM ibf_members WHERE id>0 AND last_activity>'time()-86399' ORDER BY last_activity DESCА во втором варианте автор ещё и кавычки не так как надо расставил, встречались с таким... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 redline99 Опубликовано 11 Ноября 2008 Жалоба Поделиться Опубликовано 11 Ноября 2008 (изменено) 1. Он есть2. После вашего замечания проверил еще раз. На самом деле так и есть, с любым из этих двух скриптов.Вставлял код (мод 663)$this->ipsclass->time_options['ONLINE_SHOW'] = "g:i A"; $data = array('memnum' => 0, 'members' => ''); $today = $this->ipsclass->get_time(time(), 'j-n-Y'); $this->ipsclass->DB->simple_construct(array('select' => '*', 'from' => 'members', 'where' => "id>0 AND last_activity>".time()-172800, 'order' => 'members_display_name ASC')); $this->ipsclass->DB->simple_exec(); while ($row = $this->ipsclass->DB->fetch_row()) { $time = $this->ipsclass->get_time($row['last_activity'], 'j-n-Y'); if ($time == $today) { $data['members'][$row['id']] = "<a href='{$this->ipsclass->base_url}act=Profile&MID={$row['id']}' title='".$this->ipsclass->get_date($row['last_activity'], 'ONLINE_SHOW', 1)."'>{$this->ipsclass->cache['group_cache'][$row['mgroup']]['prefix']}{$row['members_display_name']}{$this->ipsclass->cache['group_cache'][$row['mgroup']]['suffix']}</a>"; $data['memnum']++; } } if (is_array($data['members'])) { $data['members'] = implode(', ', $data['members']); } $this->ipsclass->time_options['ONLINE'] = $this->ipsclass->vars['ot_date']; $data['memstats'] = sprintf($this->ipsclass->lang['ot_data'], $data['memnum'], $this->ipsclass->get_date(time(), 'ONLINE', 1)); $online_today = $this->ipsclass->compiled_templates['skin_boards']->online_today($data); return $this->ipsclass->compiled_templates['skin_boards']->ActiveUsers($active, $this->ipsclass->vars['au_cutoff']).$online_today; По идее должно работать. Но вот в чем проблема....неизвестно. Изменено 11 Ноября 2008 пользователем redline99 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Sannis Опубликовано 12 Ноября 2008 Жалоба Поделиться Опубликовано 12 Ноября 2008 time()-172800 имхо должно быть в скобках Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 redline99 Опубликовано 13 Ноября 2008 Жалоба Поделиться Опубликовано 13 Ноября 2008 (изменено) Так ? $this->ipsclass->DB->simple_construct(array('select' => '*', 'from' => 'members', 'where' => "id>0 AND last_activity>"[b].(time()-172800), [/b]'order' => 'members_display_name ASC'));Буду благодарен, если поправите меня. Изменено 13 Ноября 2008 пользователем redline99 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Sannis Опубликовано 13 Ноября 2008 Жалоба Поделиться Опубликовано 13 Ноября 2008 Попробуйте:$this->ipsclass->DB->simple_construct(array('select' => '*', 'from' => 'members', 'where' => "id>0 AND last_activity>".(time()-172800), 'order' => 'members_display_name ASC')); Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 redline99 Опубликовано 14 Ноября 2008 Жалоба Поделиться Опубликовано 14 Ноября 2008 Сейчас получаю такой sql запрос:SELECT * FROM ibf_members WHERE id>0 AND last_activity>1226497118 ORDER BY members_display_name ASCНасколько я понимаю, так и нужно было ? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Sannis Опубликовано 15 Ноября 2008 Жалоба Поделиться Опубликовано 15 Ноября 2008 Да, это уже лучше. Индекс стоит? Тогда можно посмотреть, будет ли это напряжно серверу. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 redline99 Опубликовано 19 Ноября 2008 Жалоба Поделиться Опубликовано 19 Ноября 2008 А что имеется ввиду под индексом ? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Sannis Опубликовано 19 Ноября 2008 Жалоба Поделиться Опубликовано 19 Ноября 2008 Откройте таблицу в phphMyAdmin, под списком полей будет слева табличка с индексами таблицы. Но в этом я не профи, заранее результативность оценить не могу, нужно сравнивать. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 redline99 Опубликовано 22 Ноября 2008 Жалоба Поделиться Опубликовано 22 Ноября 2008 (изменено) В sql запросе есть строка "members_display_name"В табличке в индексами есть "members_l_display_name", колличество элементов - 6000.Просто "members_display_name" не вижу. Изменено 22 Ноября 2008 пользователем redline99 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Sannis Опубликовано 22 Ноября 2008 Жалоба Поделиться Опубликовано 22 Ноября 2008 В sql запросе есть строка "members_display_name"В табличке в индексами есть "members_l_display_name", колличество элементов - 6000.Просто "members_display_name" не вижу.Во-первых, никто и не говорит, что он там должен быть.Во-вторых, индекс нужно ставить не на поле сортировки, а на поле условия, т.е. на last_activity. Его нужно добавить, я об этом писал 10.11.2008, 22:09 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 redline99 Опубликовано 23 Ноября 2008 Жалоба Поделиться Опубликовано 23 Ноября 2008 (изменено) Понятно, спасибо. Добавил. Кстати, на что должен был повлиять этот индекс ? Изменено 23 Ноября 2008 пользователем redline99 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Sannis Опубликовано 23 Ноября 2008 Жалоба Поделиться Опубликовано 23 Ноября 2008 На скорость выполнения запроса, с этим же была проблема Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 redline99 Опубликовано 30 Ноября 2008 Жалоба Поделиться Опубликовано 30 Ноября 2008 Надеюсь что все это помогло.Огромное спасибо за помощь. Уйму времени потратили :-) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Вопрос
vain
SQL Total Time: 9.62377 for queries
это ж неимоверно много
форум грузится соответственно очень долго...
так стало после апгрейда с 2.0.4...
в режиме отладки виден запрос, который "кушает" кучу времени:
MySQL time: 7.566
кто-нибудь знает что можно сделать? анализ, починку и оптимизацию таблиц уже делал.
заранее спасибо.
Ссылка на комментарий
Поделиться на других сайтах
23 ответа на этот вопрос
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.