PALADIN+ Опубликовано 7 Марта 2006 Жалоба Поделиться Опубликовано 7 Марта 2006 Второй день глючит форумНовых модов за эту неделю вроде бы не ставил. Только предупреждающие теги, но не думаю что они могли как-то принципиально нагрузить серв. Периодически выдаётся сообщение о том что глючит SQL Например mySQL query error: SELECT DISTINCT(ibf_posts.author_id), ibf_topics.* FROM ibf_topics LEFT JOIN ibf_posts ON (ibf_topics.tid=ibf_posts.topic_id AND ibf_posts.author_id=125) WHERE ibf_topics.forum_id=12 and ibf_topics.approved=1 and (ibf_topics.pinned=1 or ibf_topics.last_post > 0) ORDER BY pinned DESC, last_post DESC LIMIT 0, 20 mySQL error: Server shutdown in progress mySQL error code: Date: Tuesday 07th of March 2006 04:57:41 PMили такWarning: mysql_query(): Unable to save result set in /home/804/s966/public_html/forum/sources/Drivers/mySQL.php on line 103 There appears to be an error with the RPG-Zone Forums database. You can try to refresh the page by clicking here, if this does not fix the error, you can contact the board administrator by clicking here Error Returned mySQL query error: SELECT p.*, m.id,m.name,m.mgroup,m.email,m.joined,m.avatar,m.avatar_size,m.posts,m.aim_name, m.icq_number, m.signature, m.website,m.yahoo,m.integ_msg,m.title,m.hide_email,m.msnname, m.warn_level, m.warn_lastwarn, g.g_id, g.g_title, g.g_icon, m.rep, g.g_dohtml FROM ibf_posts p LEFT JOIN ibf_members m ON (p.author_id=m.id) LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) WHERE p.topic_id=246 and p.queued != 1 ORDER BY p.pid asc LIMIT 1890, 30 mySQL error: Server shutdown in progress mySQL error code: Date: Tuesday 07th of March 2006 03:49:25 PM Это всё к тому, что у меня самого ещё хреновый коннект, и так страница открывается по 100 лет.Бесит, слов нет =\ От суппорта хостера письмо, будто так это и должно быть. Здравствуйте,mySQL error: Server shutdown in progress - это значит сервер снял Ваш запрос по timeout. Такое бывает при сложном поиске в непроиндексированных таблицах (или индексы не по нужным полям сделаны) С уважением, Support Что делать?Где виноватого найти? ipb 1.3 модов много и разных, но до позавчера всё было тип-топ.Пользователей у меня обычно всего ничего. В лучшие времена десяток одновременно в онлайне бывает. ==Причём иногда всё хорошо.. А иногда как затормозит =( Ссылка на комментарий Поделиться на других сайтах Прочее
Destruction Опубликовано 7 Марта 2006 Жалоба Поделиться Опубликовано 7 Марта 2006 Server shutdown in progress - никогда не сталкивался, но насколько я знаю англиский, то "Отключение сервера в процессе" означает несколько не это, хотя кто знает. Если хостер прав - возможно слетели индексы в таблицах, гляньте в phpMyAdmin. Ссылка на комментарий Поделиться на других сайтах Прочее
PALADIN+ Опубликовано 7 Марта 2006 Автор Жалоба Поделиться Опубликовано 7 Марта 2006 Да вроде бы нет. Например вот из таблицы ibf_posts Индексы :Имя ключа Тип Количество элементов Действие Поле PRIMARY PRIMARY 32444 pid topic_id INDEX Нет topic_id author_id author_id INDEX Нет author_id forum_id INDEX Нет forum_id post_date post FULLTEXT Нет post 1 post_date INDEX Нет post_date ip_address INDEX Нет ip_address Ссылка на комментарий Поделиться на других сайтах Прочее
Destruction Опубликовано 7 Марта 2006 Жалоба Поделиться Опубликовано 7 Марта 2006 Вроде то. Попросите тех-поддержку, помочь Вам выставить индексы правильно. Предварительно сделайте дамп БД, а то знаем мы их, если выставят - сверьте дампы, покажите результат, крайне интересно :-)) Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 7 Марта 2006 Жалоба Поделиться Опубликовано 7 Марта 2006 ServerShutDown in progress выдаётся тогда когда MySQL откатывает запрос. Например, выполняет команду KILL или просто демон завершает работу.Возможно у хостера сделан автоматический откат запросов, которые могут выполняються долго (хотя не представляю как это можно сделать) PALADIN+как только увидишь очередное такое сообщение сам, попробуй тут же выполнить его самостоятельно в админке, выполнится или нет. Ещё вопрос: после такого сообщения сервер дальше работает или всё прерывается? Ещё может быть что у тебя зацикливается один и тот же запрос (с помощью неправильно написанного/модифицированного скрипта), и апач откатывает запрос на его трансляцию. Правда при этом всё должно откатываться молча. Ссылка на комментарий Поделиться на других сайтах Прочее
Destruction Опубликовано 7 Марта 2006 Жалоба Поделиться Опубликовано 7 Марта 2006 Включите режим отладки MySQL и посмотрите, что он Вам скажет. Ссылка на комментарий Поделиться на других сайтах Прочее
PALADIN+ Опубликовано 8 Марта 2006 Автор Жалоба Поделиться Опубликовано 8 Марта 2006 Ладно, возможно я смогу что-то оптимизировать и без вмешательства хостера. В любом случае, на будущее пригодится. Главная страница [ Script Execution time: 0.1131 ] [ 11 queries used ] [ GZIP включён ] Список топиков и вложенных форумов[ Script Execution time: 0.3465 ] [ 17 queries used ] [ GZIP включён ] Топик[ Script Execution time: 0.3208 ] [ 21 queries used ] [ GZIP включён ] ===Видимо по количеству запросов к БД, я здесь рекордсмен.Включил SQL отладку, там список всех запросов к БДВозник вопрос -а) может быть там что-то лишнее затесалось?б) Стоят какие-то нерациональные моды?с) Несколько раз подряд выполняется один и тот же запрос? Что-то из этого может быть лишним (сильно загружающим БД)Некоторые моды я бы снёс Список форумов1SELECT id, member_id, running_time, location FROM ibf_sessions WHERE id='*********' and ip_address='**********' 2SELECT moderator.mid as is_mod, moderator.allow_warn, m.allow_anon, m.allow_rep, m.rep, m.id, m.name, m.mgroup, m.password, m.email, m.restrict_post, m.view_sigs, m.view_avs, m.view_pop, m.view_img, m.auto_track, m.mod_posts, m.language, m.skin, m.new_msg, m.show_popup, m.msg_total, m.time_offset, m.posts, m.joined, m.last_post, m.last_visit, m.last_activity, m.dst_in_use, m.view_prefs, m.org_perm_id, m.temp_ban, m.sub_end, m.forums_read, m.board_read, m.mark_after, m.view_hints, g.* FROM ibf_members m LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) LEFT JOIN ibf_moderators moderator ON (moderator.member_id=m.id OR moderator.group_id=m.mgroup ) WHERE m.id=125 3DELETE FROM ibf_log_topics WHERE logTime < 1140508937 AND mid='125' 4UPDATE ibf_sessions SET member_name='Вейлор',member_id='125',member_group='4',in_forum='0',in_topic='0',in_profile='',login_type='',running_time='1141804937',location='SC,,' WHERE id='******' 5SELECT s.*, t.template, c.css_text FROM ibf_skins s LEFT JOIN ibf_templates t ON (t.tmid=s.tmpl_id) LEFT JOIN ibf_css c ON (c.cssid=s.css_id) WHERE s.sid=1 6SELECT fid, logTime FROM ibf_log_forums WHERE mid='125' 7SELECT f.*, c.id as cat_id, c.position as cat_position, c.state as cat_state, c.name as cat_name, c.description as cat_desc, c.image, c.url, m.member_name as mod_name, m.member_id as mod_id, m.is_group, m.group_id, m.group_name, m.mid FROM ibf_forums f, ibf_categories c LEFT JOIN ibf_moderators m ON (f.id=m.forum_id) WHERE c.id=f.category and c.id='1' ORDER BY c.position, f.position 8SELECT s.id, s.member_id, s.member_name, s.login_type, g.suffix, g.prefix FROM ibf_sessions s LEFT JOIN ibf_groups g ON (g.g_id=s.member_group) WHERE running_time > 1141804037 ORDER BY s.running_time DESC 9SELECT id, name, bday_day as DAY, bday_month as MONTH, bday_year as YEAR FROM ibf_members WHERE bday_day=8 and bday_month=3 10SELECT * FROM ibf_stats 11SELECT macro_value, macro_replace FROM ibf_macro WHERE macro_set=2 Список топиков SELECT id, member_id, running_time, location FROM ibf_sessions WHERE id='***************' and ip_address='********' SELECT moderator.mid as is_mod, moderator.allow_warn, m.allow_anon, m.allow_rep, m.rep, m.id, m.name, m.mgroup, m.password, m.email, m.restrict_post, m.view_sigs, m.view_avs, m.view_pop, m.view_img, m.auto_track, m.mod_posts, m.language, m.skin, m.new_msg, m.show_popup, m.msg_total, m.time_offset, m.posts, m.joined, m.last_post, m.last_visit, m.last_activity, m.dst_in_use, m.view_prefs, m.org_perm_id, m.temp_ban, m.sub_end, m.forums_read, m.board_read, m.mark_after, m.view_hints, g.* FROM ibf_members m LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) LEFT JOIN ibf_moderators moderator ON (moderator.member_id=m.id OR moderator.group_id=m.mgroup ) WHERE m.id=125 DELETE FROM ibf_log_topics WHERE logTime < 1140508934 AND mid='125' UPDATE ibf_sessions SET member_name='Aaeei?',member_id='125',member_group='4',in_forum='3',in_topic='0',in_profile='',login_type='',running_time='1141804934',location='SF,,' WHERE id='***************' SELECT s.*, t.template, c.css_text FROM ibf_skins s LEFT JOIN ibf_templates t ON (t.tmid=s.tmpl_id) LEFT JOIN ibf_css c ON (c.cssid=s.css_id) WHERE s.sid=1 SELECT fid, logTime FROM ibf_log_forums WHERE mid='125' SELECT f.*, c.id as cat_id, c.name as cat_name FROM ibf_forums f LEFT JOIN ibf_categories c ON (c.id=f.category) WHERE f.id=3 SELECT f.id as forum_id, f.parent_id, f.subwrap, f.sub_can_post, f.name as forum_name, f.position, f.redirect_on, f.read_perms, c.id as cat_id, c.name FROM ibf_forums f LEFT JOIN ibf_categories c ON (c.id=f.category) WHERE c.state IN (1,2) ORDER BY c.position, f.position SELECT f.*, m.member_name as mod_name, m.member_id as mod_id, m.is_group, m.group_id, m.group_name, m.mid FROM ibf_forums f LEFT JOIN ibf_moderators m ON (f.id=m.forum_id) WHERE parent_id='3' ORDER BY position SELECT tid, logTime FROM ibf_log_topics WHERE mid='125' AND fid='3' SELECT COUNT(tid) as max FROM ibf_topics WHERE forum_id=3 and approved=1 and (pinned=1 or last_post > 0) SELECT DISTINCT(ibf_posts.author_id), ibf_topics.* FROM ibf_topics LEFT JOIN ibf_posts ON (ibf_topics.tid=ibf_posts.topic_id AND ibf_posts.author_id=125) WHERE ibf_topics.forum_id=3 and ibf_topics.approved=1 and (ibf_topics.pinned=1 or ibf_topics.last_post > 0) ORDER BY pinned DESC, last_post DESC LIMIT 0, 20 SELECT topic_id, post FROM ibf_posts WHERE topic_id IN (726, 1124, 1107, 994, 1114, 1109, 1099, 804, 827, 967, 979, 1044, 1043, 1040, 1001, 987, 817, 972, 973, 959) AND new_topic=1 SELECT topic_id, post FROM ibf_posts WHERE pid IN (0,34720,34635,34590,34493,34498,34325,34150,33431,33370,33307,33125,32297,32273 ,32204,31320,30648,30581,30445,30387,29915) UPDATE ibf_log_forums SET logTime='1141804935' WHERE fid='3' AND mid='125' SELECT s.member_id, s.member_name, s.login_type, s.location, g.suffix, g.prefix, g.g_perm_id, t.forum_id, m.org_perm_id FROM ibf_sessions s LEFT JOIN ibf_groups g ON (g.g_id=s.member_group) LEFT JOIN ibf_topics t ON (t.tid=s.in_topic) LEFT JOIN ibf_members m on (s.member_id=m.id) WHERE (s.in_forum=3 OR t.forum_id=3) AND s.running_time > 1141804035 ORDER BY s.running_time DESC SELECT macro_value, macro_replace FROM ibf_macro WHERE macro_set=2 В топике SELECT t.*, f.topic_mm_id, f.name as forum_name, f.quick_reply, f.id as forum_id, f.read_perms, f.reply_perms, f.parent_id, f.use_html, f.start_perms, f.allow_poll, f.password, f.posts as forum_posts, f.topics as forum_topics, f.upload_perms, f.show_rules, f.rules_text, f.rules_title, c.name as cat_name, c.id as cat_id FROM ibf_topics t, ibf_forums f , ibf_categories c WHERE t.tid=1141 and f.id = t.forum_id and f.category=c.id SELECT id, member_id, running_time, location FROM ibf_sessions WHERE id='*****************' and ip_address='**********' SELECT moderator.mid as is_mod, moderator.allow_warn, m.allow_anon, m.allow_rep, m.rep, m.id, m.name, m.mgroup, m.password, m.email, m.restrict_post, m.view_sigs, m.view_avs, m.view_pop, m.view_img, m.auto_track, m.mod_posts, m.language, m.skin, m.new_msg, m.show_popup, m.msg_total, m.time_offset, m.posts, m.joined, m.last_post, m.last_visit, m.last_activity, m.dst_in_use, m.view_prefs, m.org_perm_id, m.temp_ban, m.sub_end, m.forums_read, m.board_read, m.mark_after, m.view_hints, g.* FROM ibf_members m LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) LEFT JOIN ibf_moderators moderator ON (moderator.member_id=m.id OR moderator.group_id=m.mgroup ) WHERE m.id=125 DELETE FROM ibf_log_topics WHERE logTime < 1140508876 AND mid='125' UPDATE ibf_sessions SET member_name='Aaeei?',member_id='125',member_group='4',in_forum='59',in_topic='1141',in_profile='',login_type='',running_time='1141804876',location='ST,,' WHERE id='*****************' UPDATE ibf_members SET last_activity='1141804876' WHERE id=125 SELECT s.*, t.template, c.css_text FROM ibf_skins s LEFT JOIN ibf_templates t ON (t.tmid=s.tmpl_id) LEFT JOIN ibf_css c ON (c.cssid=s.css_id) WHERE s.sid=1 SELECT fid, logTime FROM ibf_log_forums WHERE mid='125' SELECT logTime FROM ibf_log_topics WHERE tid='1141' AND mid='125' SELECT f.id as forum_id, f.parent_id, f.subwrap, f.sub_can_post, f.name as forum_name, f.position, f.redirect_on, f.read_perms, c.id as cat_id, c.name FROM ibf_forums f LEFT JOIN ibf_categories c ON (c.id=f.category) WHERE c.state IN (1,2) ORDER BY c.position, f.position UPDATE ibf_topics SET views=views+1 WHERE tid='1141' UPDATE ibf_log_topics SET logTime='1141804876' WHERE tid='1141' AND mid='125' UPDATE ibf_log_forums SET logTime='1141804876' WHERE fid='59' AND mid='125' SELECT f.id as forum_id, f.name as forum_name, c.id, c.name FROM ibf_forums f, ibf_categories c WHERE f.id=3 AND c.id=f.category SELECT id, title, pips, posts from ibf_titles ORDER BY posts DESC SELECT s.member_id FROM ibf_sessions s, ibf_posts p WHERE p.topic_id='1141' and p.queued !='1' AND s.member_id<>'0' AND s.running_time > 1141803976 AND s.member_id=p.author_id AND s.login_type !='1' SELECT p.*, m.id,m.name,m.mgroup,m.email,m.joined,m.avatar,m.avatar_size,m.posts,m.aim_name, m.icq_number, m.signature, m.website,m.yahoo,m.integ_msg,m.title,m.hide_email,m.msnname, m.warn_level, m.warn_lastwarn, g.g_id, g.g_title, g.g_icon, m.rep, g.g_dohtml FROM ibf_posts p LEFT JOIN ibf_members m ON (p.author_id=m.id) LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) WHERE p.topic_id=1141 and p.queued != 1 ORDER BY p.pid asc LIMIT 0, 30 SELECT s.member_id, s.member_name, s.login_type, s.location, g.suffix, g.prefix, g.g_perm_id, m.org_perm_id FROM ibf_sessions s LEFT JOIN ibf_groups g ON (g.g_id=s.member_group) LEFT JOIN ibf_members m on (s.member_id=m.id) WHERE s.in_topic=1141 AND s.running_time > 1141803976 ORDER BY s.running_time DESC SELECT * FROM ibf_emoticons WHERE clickable='1' SELECT trid FROM ibf_tracker WHERE topic_id=1141 AND member_id=125 SELECT macro_value, macro_replace FROM ibf_macro WHERE macro_set=2 Ссылка на комментарий Поделиться на других сайтах Прочее
PALADIN+ Опубликовано 9 Марта 2006 Автор Жалоба Поделиться Опубликовано 9 Марта 2006 Посмотрите. Открытие списка топиков! Список процессов Команда Query Время 11 !!!! Статус Copying to tmp table SQL-запрос SELECT DISTINCT ( ibf_posts.author_id ), ibf_topics . * FROM ibf_topics LEFT JOIN ibf_posts? Появляется в списке топиков. Что там может быть? Вспоминается только топик-хинтс.неужели он мне стал вешать БД? Ведь я его достаточно давно поставил, а замечать неполадки стал всего несколько дней назад. Ссылка на комментарий Поделиться на других сайтах Прочее
.silent Опубликовано 9 Марта 2006 Жалоба Поделиться Опубликовано 9 Марта 2006 странный запрос или ты его не полностью сюда запихнул? Ссылка на комментарий Поделиться на других сайтах Прочее
PALADIN+ Опубликовано 9 Марта 2006 Автор Жалоба Поделиться Опубликовано 9 Марта 2006 Возможно phpMyAdmin его не полностью показывает?Либо он выполняется частично, и когда я обновил ркно процессов была только часть.Вот где я смотрел.http://rpg-zone.ru/users/forum/db1.jpg В описании мода топик-хинтс есть похожий фрагмент. файл ./sources/forums.php // ************************************************************* // Возвращаем обратно штатные запросы. // --------------- // Найти: // --------------- $query = "SELECT DISTINCT(ip.author_id), t.*, p.post, lp.post as l_post FROM ibf_topics t LEFT JOIN ibf_posts ip ON (t.tid=ip.topic_id AND ip.author_id=".$ibforums->member['id'].") LEFT JOIN ibf_posts p ON (t.tid=p.topic_id AND p.new_topic=1) LEFT JOIN ibf_posts lp ON (t.tid=lp.topic_id AND lp.post_date=t.last_post) WHERE t.forum_id=".$this->forum['id']." and t.approved=1 and (t.pinned=1 or t.last_post > $Prune)"; // --------------- // Заменить на: // --------------- $query = "SELECT DISTINCT(ibf_posts.author_id), ibf_topics.* FROM ibf_topics LEFT JOIN ibf_posts ON (ibf_topics.tid=ibf_posts.topic_id AND ibf_posts.author_id=".$ibforums->member['id'].") WHERE ibf_topics.forum_id=".$this->forum['id']." and ibf_topics.approved=1 and (ibf_topics.pinned=1 or ibf_topics.last_post > $Prune)"; Причём обычно список топиков с хинтами открывается нормально :0 Вот тоже, не верх скорости. localhost Query врямя 2 статус end DELETE FROM ibf_log_topics WHERE logTime <1140604869 AND mid = '616' Может это просто хостер тупит у себя на серве? А вот простое действие - открытие профиля. http://rpg-zone.ru/users/forum/db2.jpg Я в недоумении и ярости! Открытие профиля завершается Warning: mysql_query(): Unable to save result set in /home/804/s966/public_html/forum/sources/Drivers/mySQL.php on line 103 There appears to be an error with the RPG-Zone Forums database.You can try to refresh the page by clicking here, if this does not fix the error, you can contact the board administrator by clicking here Error ReturnedmySQL query error: SELECT m.id, m.name, me.photo_type, me.photo_location, me.photo_dimensions FROM ibf_member_extra me LEFT JOIN ibf_members m ON me.id=m.id WHERE m.id=94 mySQL error: Server shutdown in progress mySQL error code: Date: Thursday 09th of March 2006 02:29:13 PMWe apologise for any inconvenience В профиле точно тормозить нечему! Правильно? Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 9 Марта 2006 Жалоба Поделиться Опубликовано 9 Марта 2006 Тут можно много чего оптимизировать, но в принципе более или менее.Я могу сказать, как сделано у меня. 1) У меня кешируется ibf_groups, поэтому у меня из всех запросов исчезло LEFT JOIN ibf_groups. Т.е. "джойн" у меня выполняется программно. Это помогло облегчить запрос. А в некоторых запросах прооптимизировать использование индекса (например, запрос по онлайн юзерам в списке топиков, в топике, в root). 2) Вот этот запрос DELETE FROM ibf_log_topics WHERE logTime < 1140508937 AND mid='125' у тебя удаляет старые логи топиков.Я бы поставил эту феню на крон. 3) SELECT s.*, t.template, c.css_text FROM ibf_skins s LEFT JOIN ibf_templates t ON (t.tmid=s.tmpl_id) LEFT JOIN ibf_css c ON (c.cssid=s.css_id) WHERE s.sid=1Это загрузка элементов скина.У меня здесь загружается только одна таблица ibf_skins.*, а скелет темплейта и css у меня загружаются из текстового файла, т.е. у меня не джойнятся таблицы, а значит и запрос легче. 4) SELECT f.*, c.id as cat_id, c.position as cat_position, c.state as cat_state, c.name as cat_name, c.description as cat_desc, c.image, c.url, m.member_name as mod_name, m.member_id as mod_id, m.is_group, m.group_id, m.group_name, m.mid FROM ibf_forums f, ibf_categories c LEFT JOIN ibf_moderators m ON (f.id=m.forum_id) WHERE c.id=f.category and c.id='1' ORDER BY c.position, f.position Здесь моя оптимизация уже стоит 5) SELECT COUNT(tid) as max FROM ibf_topics WHERE forum_id=3 and approved=1 and (pinned=1 or last_post > 0)Этот запрос на получения общего количества топиков. Я убираю его опционально.Т.е. если стоит "Показывать всё" (а я так по умолчанию и сделал), то я его не выполняю, ибо он тяжёлый. 6) SELECT DISTINCT(ibf_posts.author_id), ibf_topics.* FROM ibf_topics LEFT JOIN ibf_posts ON (ibf_topics.tid=ibf_posts.topic_id AND ibf_posts.author_id=125) WHERE ibf_topics.forum_id=3 and ibf_topics.approved=1 and (ibf_topics.pinned=1 or ibf_topics.last_post > 0) ORDER BY pinned DESC, last_post DESC LIMIT 0, 20 Этот запрос выбирает список топиков в определённом разделе. Очень нерациональный запрос, т.к. к неме джойнится огромная таблица постов (собственно связываются 2 самых больших таблицы в форуме). И знаете всего лишь для чего делается это тяжёлое соединение?Только для того, чтобы показать в каких топиках юзер отметился в каких нет (чёрная точка на конверте топика).У меня разбито на два. Собственно это и объсняет твои восклицания:Посмотрите. Открытие списка топиков! Список процессов Команда Query Время 11 !!!!Этот запрос очень тормозит в условиях большой занятости мускула.Я разбивал на два, стало не быстрей, однако стало легче проходить, когда много людей. 7) SELECT topic_id, post FROM ibf_posts WHERE topic_id IN (726, 1124, 1107, 994, 1114, 1109, 1099, 804, 827, 967, 979, 1044, 1043, 1040, 1001, 987, 817, 972, 973, 959) AND new_topic=1Это нестандартный запрос. По-видимому это Topic Hints причём хороший Topic Hints Видимо в редакции Valer'ы. Но. Раз у тебя есть этот запрос, зачем предыдущий?Можно ведь выбирать без условия new_topic=1, а сравнивать внутри цикла обработки. А из прошлого убрать связку на ibf_posts и медленный DISTINCT. 8) SELECT s.member_id, s.member_name, s.login_type, s.location, g.suffix, g.prefix, g.g_perm_id, t.forum_id, m.org_perm_id FROM ibf_sessions s LEFT JOIN ibf_groups g ON (g.g_id=s.member_group) LEFT JOIN ibf_topics t ON (t.tid=s.in_topic) LEFT JOIN ibf_members m on (s.member_id=m.id) WHERE (s.in_forum=3 OR t.forum_id=3) AND s.running_time > 1141804035 ORDER BY s.running_time DESCИз этого запроса у меня выкинуты все джойны, а сама ibf_sessions поставлена на кеширование в память. 9) SELECT s.member_id FROM ibf_sessions s, ibf_posts p WHERE p.topic_id='1141' and p.queued !='1' AND s.member_id<>'0' AND s.running_time > 1141803976 AND s.member_id=p.author_id AND s.login_type !='1'Это тоже не стандартный запрос. По виду не могу точно понять для чего он..Видимо для Offline/Online статус.ИМХО тоже нерационален.У меня online/offline сделана джойном на запрос постов. 10) SELECT s.member_id, s.member_name, s.login_type, s.location, g.suffix, g.prefix, g.g_perm_id, m.org_perm_id FROM ibf_sessions s LEFT JOIN ibf_groups g ON (g.g_id=s.member_group) LEFT JOIN ibf_members m on (s.member_id=m.id) WHERE s.in_topic=1141 AND s.running_time > 1141803976 ORDER BY s.running_time DESCАналогично 8. 11) SELECT trid FROM ibf_tracker WHERE topic_id=1141 AND member_id=125Для этого запроса я оптимизировал индекс. В описании мода топик-хинтс есть похожий фрагмент.У тебя стоит не этот топик-хинтс, я уже говорил. Если стоит этот, то понятно почему у тебя всё падает... Анамнез:Всё у тебя как в стандарте, не должно из-за этого чего-либо падать.Проверь запросы 7) 8) (по цифрам моего поста)Просто нет смысла утежелять 7, если в 8 всё это достаётся за милую душу. Кстати, если в 8 не топик хинтс, то что же это? Я так думаю, что именно он. В профиле точно тормозить нечему! Правильно?Правильно. Просто я ж говорю, что "Server shutdown in progress" не выдаётся при тормозах.Мне кажется, это глюки хостера, его мускуловского демона. Ссылка на комментарий Поделиться на других сайтах Прочее
pikachu Опубликовано 9 Марта 2006 Жалоба Поделиться Опубликовано 9 Марта 2006 пардон за оффтопик небольшой, но: SongSHUTDOWN QUERY: Select Query SELECT * FROM ibf_skin_sets WHERE set_skin_set_id=18 --- ibf_skin_sets MySQL time: 0.24806 (на форуме 3 шаблона) иSelect Query SELECT id, name, last_activity, posts, last_post, last_ip, login_anonymous, mgroup FROM ibf_members WHERE id != 0 AND mgroup != 2 AND (last_activity BETWEEN '1141851600' AND '1141937999') ORDER BY last_activity --- ibf_membersMySQL time: 0.16695 Не подскажете как "облегчить" эти запросы? может каким-нибудь кешированием в файлы? Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 9 Марта 2006 Жалоба Поделиться Опубликовано 9 Марта 2006 Первый запрос - проиндексировать set_skin_set_id.Второй - трудно сказать.. Надо смотреть его EXPLAIN. Возможно хватит проиндексировать last_activity. Ссылка на комментарий Поделиться на других сайтах Прочее
Raynor Опубликовано 9 Марта 2006 Жалоба Поделиться Опубликовано 9 Марта 2006 6)SQLSELECT DISTINCT(ibf_posts.author_id), ibf_topics.* FROM ibf_topics LEFT JOIN ibf_posts ON (ibf_topics.tid=ibf_posts.topic_id AND ibf_posts.author_id=125) WHERE ibf_topics.forum_id=3 and ibf_topics.approved=1 and (ibf_topics.pinned=1 or ibf_topics.last_post > 0) ORDER BY pinned DESC, last_post DESC LIMIT 0, 20 Этот запрос выбирает список топиков в определённом разделе. Очень нерациональный запрос, т.к. к неме джойнится огромная таблица постов (собственно связываются 2 самых больших таблицы в форуме). И знаете всего лишь для чего делается это тяжёлое соединение?Только для того, чтобы показать в каких топиках юзер отметился в каких нет (чёрная точка на конверте топика).У меня разбито на два. Собственно это и объсняет твои восклицания:ЦитатаПосмотрите. Открытие списка топиков! Список процессов Команда Query Время 11 !!!! Этот запрос очень тормозит в условиях большой занятости мускула.Я разбивал на два, стало не быстрей, однако стало легче проходить, когда много людей.Жутко тормозной запрос.Надо сразу отключать в админке (что-то вроде Настройки Быстродействия -> Отмечать темы в которых отвечал пользователь при просмотре форума, точное название настройки не помню), ибо предоставляемые возможности несоизмеримы с потребляемыми ресурсами... Ссылка на комментарий Поделиться на других сайтах Прочее
ImUgh Опубликовано 9 Марта 2006 Жалоба Поделиться Опубликовано 9 Марта 2006 Song У меня кешируется ibf_groups, поэтому у меня из всех запросов исчезло LEFT JOIN ibf_groups. Т.е. "джойн" у меня выполняется программно. а сама ibf_sessions поставлена на кеширование в память.можно немного по-подробнее про кеширование запросов, плиз? как именно ты их кэшируешь и где хранится этот кэш? Ссылка на комментарий Поделиться на других сайтах Прочее
PALADIN+ Опубликовано 9 Марта 2006 Автор Жалоба Поделиться Опубликовано 9 Марта 2006 Song, спасибо посмотрю что можно сделать. =====Отключил как и рекомендовалось"Выделять темы с новыми ответами на форуме?"Было[ Script Execution time: 1.8647 ] [ 17 queries used ] [ GZIP включён ] Стало[ Script Execution time: 0.3050 ] [ 18 queries used ] [ GZIP включён ] Это как? 0_o не понимаю. На один запрос стало больше, хотя действие мы убрали. Там-же, рядом с этой настройкой есть. Отключить функцию 'Пользователи просматривающие этот форум'?(Этим Вы сэкономите по одному запросу, для каждого просмотра форума) Да Нет Отключить функцию 'Пользователи просматривающие эту тему'?(Этим Вы сэкономите по одному запросу, для каждого просмотра темы) Да Нет Как у этого запроса с нагрузкой на БД? Топик хинтс у меня такой.TopicHints v1.40 for Invision Power Board v1.3F// © UriSoft 2004-2005 Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 9 Марта 2006 Жалоба Поделиться Опубликовано 9 Марта 2006 2ImUghу меня при старте index.php выполняется SELECT * FROM ibf_groupsТабличка небольшая поэтому никакого значения этот запрос не имеет. Данные после этого запроса накапливаются в глобальный массив в php.Далее во всех циклах, где были ранее нужны данные по группам соответствующая ячейка этого массива мергится в массив результатов запроса, а джойн из запроса удаляется как уже ненужный. Что касается ibf_session то у неё сменён тип с MyISAM на HEAP, ну и таблица собственно вся перебрана. Отключил как и рекомендовалось"Выделять темы с новыми ответами на форуме?"Было[ Script Execution time: 1.8647 ] [ 17 queries used ] [ GZIP включён ] Стало[ Script Execution time: 0.3050 ] [ 18 queries used ] [ GZIP включён ]Ну зато видишь как стало меньше выполняться?Что до того, что увеличилось количество запросов, это всё фигня, т.к. это проделки авторизации, не обращай внимания. Там-же, рядом с этой настройкой есть. Отключить функцию 'Пользователи просматривающие этот форум'?(Этим Вы сэкономите по одному запросу, для каждого просмотра форума) Да Нет Отключить функцию 'Пользователи просматривающие эту тему'?(Этим Вы сэкономите по одному запросу, для каждого просмотра темы) Да НетНу вот это и есть 8 и 11.Ну, если эта инфа не сильно шибко нужна, то лучше бы отключить. Топик хинтс у меня такой.TopicHints v1.40 for Invision Power Board v1.3F// © UriSoft 2004-2005Ну значит UriSoft исправился Ссылка на комментарий Поделиться на других сайтах Прочее
ImUgh Опубликовано 10 Марта 2006 Жалоба Поделиться Опубликовано 10 Марта 2006 PALADIN+Это как? 0_o не понимаю. На один запрос стало больше, хотя действие мы убрали.чтобы все это отлавливать включи на форуме 3ий уровень отладки, чтобы показывались все запросы к БДа чтобы это не увидели юзеры добавь, например, в functions.php в функцию do_output перед if ($ibforums->vars['debug_level'] > 0) следующее: if ($INFO['debug_level']>1 && !$ibforums->member['g_is_supmod']) { $INFO['debug_level']=1; } Songу меня при старте index.php выполняетсяОк, я так и думал. Действительно, сама по себе таблица легкая, а джойнить её к монстрам уже тяжело. Что касается ibf_sessionтут мне тяжелее Ссылка на комментарий Поделиться на других сайтах Прочее
Reazon Опубликовано 11 Марта 2006 Жалоба Поделиться Опубликовано 11 Марта 2006 Почитал темку, для себя отметил как "Дожна быть прочитанной)"У себя отключил пару функций из CPU Saving & Optimization:1) Update Topic Views Immediately 2) Mark topics a user has posted when displaying a forum? Форум стал "летать". 0.3724 а было 3.4ххх Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения