Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Тормозят некоторые запросы форума punbb / 15 сообщений из 15, страница 1 из 1
06.01.2011, 11:19:16
    #37047285
Barvinok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тормозят некоторые запросы форума punbb
Доброе время суток.
Есть форум punbb, недавно переехал с mysql 5.0.67 на 5.1.51, вылезли некоторые непонятные тормоза.

Там, например, такой запрос для вывода страницы темы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note,
u.reputation_enable, p.id, p.poster AS username, p.poster_id, p.poster_ip, LOWER(p.isocc) as isocc, p.poster_email, p.message,
p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online, IsShielded( 3 ,p.poster_id) AS shield,
(select count(*) from reputation rp where rp.post_id = p.id) as repos, (select SUM(r1.rep_plus) from reputation r1
where r1.user_id = p.poster_id) as count_rep_plus, (select SUM(r2.rep_minus) from reputation r2
where r2.user_id = p.poster_id) as count_rep_minus FROM posts AS p INNER JOIN users AS u ON u.id=p.poster_id INNER JOIN
groups AS g ON g.g_id=u.group_id LEFT JOIN online AS o ON (o.user_id=u.id AND o.user_id!= 1  AND o.idle= 0 )
WHERE p.topic_id= 14046  ORDER BY p.id LIMIT  50 , 50 ;

его EXPLAIN показывает, что всё более-менее нормально:
Хороший EXPLAIN


А вот тот-же самый запрос, но с другими числами
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note,
u.reputation_enable, p.id, p.poster AS username, p.poster_id, p.poster_ip, LOWER(p.isocc) as isocc, p.poster_email, p.message,
p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online, IsShielded( 27 ,p.poster_id) AS shield,
(select count(*) from reputation rp where rp.post_id = p.id) as repos, (select SUM(r1.rep_plus) from reputation r1
where r1.user_id = p.poster_id) as count_rep_plus, (select SUM(r2.rep_minus) from reputation r2
where r2.user_id = p.poster_id) as count_rep_minus FROM posts AS p INNER JOIN users AS u ON u.id=p.poster_id INNER JOIN
groups AS g ON g.g_id=u.group_id LEFT JOIN online AS o ON (o.user_id=u.id AND o.user_id!= 1  AND o.idle= 0 )
WHERE p.topic_id= 8993  ORDER BY p.id LIMIT  25050 , 50 ;
нещадно тормозит и его EXPLAIN вот такой
Плохой EXPLAIN


CREATE TABLE users
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
CREATE TABLE `users` (
  `id` int( 10 ) unsigned NOT NULL AUTO_INCREMENT,
  `group_id` int( 10 ) unsigned NOT NULL DEFAULT '4',
  `username` varchar( 200 ) NOT NULL DEFAULT '',
  `password` varchar( 40 ) NOT NULL DEFAULT '',
  `email` varchar( 50 ) NOT NULL DEFAULT '',
  `title` varchar( 50 ) DEFAULT NULL,
  `realname` varchar( 40 ) DEFAULT NULL,
  `url` varchar( 100 ) DEFAULT NULL,
  `jabber` varchar( 75 ) DEFAULT NULL,
  `icq` varchar( 12 ) DEFAULT NULL,
  `msn` varchar( 50 ) DEFAULT NULL,
  `aim` varchar( 30 ) DEFAULT NULL,
  `yahoo` varchar( 30 ) DEFAULT NULL,
  `location` varchar( 30 ) DEFAULT NULL,
  `use_avatar` tinyint( 1 ) NOT NULL DEFAULT '0',
  `signature` text,
  `disp_topics` tinyint( 3 ) unsigned DEFAULT NULL,
  `disp_posts` tinyint( 3 ) unsigned DEFAULT NULL,
  `email_setting` tinyint( 1 ) NOT NULL DEFAULT '1',
  `save_pass` tinyint( 1 ) NOT NULL DEFAULT '1',
  `notify_with_post` tinyint( 1 ) NOT NULL DEFAULT '0',
  `show_smilies` tinyint( 1 ) NOT NULL DEFAULT '1',
  `show_img` tinyint( 1 ) NOT NULL DEFAULT '1',
  `show_img_sig` tinyint( 1 ) NOT NULL DEFAULT '1',
  `show_avatars` tinyint( 1 ) NOT NULL DEFAULT '1',
  `show_sig` tinyint( 1 ) NOT NULL DEFAULT '1',
  `timezone` float NOT NULL DEFAULT '0',
  `language` varchar( 25 ) NOT NULL DEFAULT 'English',
  `style` varchar( 25 ) NOT NULL DEFAULT 'Oxygen',
  `num_posts` int( 10 ) unsigned NOT NULL DEFAULT '0',
  `last_post` int( 10 ) unsigned DEFAULT NULL,
  `registered` int( 10 ) unsigned NOT NULL DEFAULT '0',
  `registration_ip` varchar( 15 ) NOT NULL DEFAULT '0.0.0.0',
  `last_visit` int( 10 ) unsigned NOT NULL DEFAULT '0',
  `admin_note` varchar( 30 ) DEFAULT NULL,
  `activate_string` varchar( 50 ) DEFAULT NULL,
  `activate_key` varchar( 8 ) DEFAULT NULL,
  `reputation_enable` smallint( 6 ) DEFAULT '1',
  `reputation_enable_adm` tinyint( 1 ) unsigned DEFAULT '1',
  `clone` int( 11 ) DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `users_registered_idx` (`registered`),
  KEY `users_username_idx` (`username`( 8 )),
  KEY `statidx` (`last_post`,`username`,`id`)
) ENGINE=MyISAM AUTO_INCREMENT= 8874  DEFAULT CHARSET=cp1251 ROW_FORMAT=FIXED

В чём может быть дело?
...
Рейтинг: 0 / 0
06.01.2011, 12:39:10
    #37047384
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тормозят некоторые запросы форума punbb
Barvinok, видимо неудачное соотношение числа юзеров и ожидающегося числа постов в этой теме. mysql решил начать строить объединение с users. эта плохая стратегия. Попробуй влепи туда use index (posts_topic_idx). не поможет - так force index.
...
Рейтинг: 0 / 0
06.01.2011, 12:47:55
    #37047391
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тормозят некоторые запросы форума punbb
вот еще интересная штука, но сомнительная
optimizer_search_depth
http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_optimizer_search_depth
If set to 63, the optimizer switches to the algorithm used in MySQL 5.0.0 (and previous versions) for performing searches. The value of 63 is deprecated and will be treated as invalid in a future MySQL release.
...
Рейтинг: 0 / 0
06.01.2011, 12:56:40
    #37047410
Barvinok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тормозят некоторые запросы форума punbb
netwindBarvinok, видимо неудачное соотношение числа юзеров и ожидающегося числа постов в этой теме. mysql решил начать строить объединение с users. эта плохая стратегия. Попробуй влепи туда use index (posts_topic_idx). не поможет - так force index.
Спасибо, помогло! :)
...
Рейтинг: 0 / 0
06.01.2011, 13:10:33
    #37047427
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тормозят некоторые запросы форума punbb
Barvinok, а что optimizer_search_depth ? портить регулярно обновляемый базовый код скрипта может оказаться неудобно.
...
Рейтинг: 0 / 0
06.01.2011, 13:11:47
    #37047428
Barvinok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тормозят некоторые запросы форума punbb
netwindBarvinok, а что optimizer_search_depth ? портить регулярно обновляемый базовый код скрипта может оказаться неудобно.
Да, но я так понял что эта переменная deprecated, и с надеждой на будущие обновления мускуля её вообще лучше не трогать?
...
Рейтинг: 0 / 0
06.01.2011, 13:14:23
    #37047431
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тормозят некоторые запросы форума punbb
Barvinok, им соврать - раз плюнуть. переменную ведь в недавно вышедший 5.5 перенесли.
наверняка у тебя еще есть подобные запросы.
...
Рейтинг: 0 / 0
06.01.2011, 13:49:03
    #37047492
Barvinok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тормозят некоторые запросы форума punbb
netwindBarvinok, им соврать - раз плюнуть. переменную ведь в недавно вышедший 5.5 перенесли.
наверняка у тебя еще есть подобные запросы.
Да ладно, я лучше поправлю. Оно так портабельнее будет.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
25.10.2015, 22:25:02
    #39086221
Barvinok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тормозят некоторые запросы форума punbb
Прошу прощения за некропостинг, но опять-таки тот же запрос и те же проблемы того же форума в связи с апгрейдом.
Проблемный запрос на получение обычной страницы темы с сообщениями
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note,
u.reputation_enable, p.id, p.poster AS username, p.poster_id, p.poster_ip, LOWER(p.isocc) as isocc, p.poster_email, p.message,
p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online, IsShielded(3,p.poster_id) AS shield,
(select count(*) from reputation rp where rp.post_id = p.id) as repos, (select SUM(r1.rep_plus) from reputation r1 where r1.user_id =
p.poster_id) as count_rep_plus, (select SUM(r2.rep_minus) from reputation r2 where r2.user_id = p.poster_id) as
count_rep_minus

FROM posts AS p USE INDEX (posts_topic_id_idx) left JOIN users AS u ON u.id=p.poster_id left JOIN groups AS g ON
g.g_id=u.group_id LEFT JOIN online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=8993 ORDER BY p.id LIMIT
49550,50


Суть проблемы: запрос выполняется ненормально долго -- как минимум минут 10, окончания ни разу дождаться не удалось.
До апгрейда типичное время было порядка 2-3 секунд на том же железе.

extended explain

его explain тоже иногда виснет.

таблица u
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
CREATE TABLE `users` (
	`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
	`group_id` INT(10) UNSIGNED NOT NULL DEFAULT '4',
	`username` VARCHAR(200) NOT NULL DEFAULT '',
	`password` VARCHAR(40) NOT NULL DEFAULT '',
	`email` VARCHAR(50) NOT NULL DEFAULT '',
	`title` VARCHAR(50) NULL DEFAULT NULL,
	`realname` VARCHAR(40) NULL DEFAULT NULL,
	`url` VARCHAR(100) NULL DEFAULT NULL,
	`jabber` VARCHAR(75) NULL DEFAULT NULL,
	`icq` VARCHAR(12) NULL DEFAULT NULL,
	`msn` VARCHAR(50) NULL DEFAULT NULL,
	`aim` VARCHAR(30) NULL DEFAULT NULL,
	`yahoo` VARCHAR(30) NULL DEFAULT NULL,
	`location` VARCHAR(30) NULL DEFAULT NULL,
	`use_avatar` TINYINT(1) NOT NULL DEFAULT '0',
	`signature` TEXT NULL,
	`disp_topics` TINYINT(3) UNSIGNED NULL DEFAULT NULL,
	`disp_posts` TINYINT(3) UNSIGNED NULL DEFAULT NULL,
	`email_setting` TINYINT(1) NOT NULL DEFAULT '1',
	`save_pass` TINYINT(1) NOT NULL DEFAULT '1',
	`notify_with_post` TINYINT(1) NOT NULL DEFAULT '0',
	`show_smilies` TINYINT(1) NOT NULL DEFAULT '1',
	`show_img` TINYINT(1) NOT NULL DEFAULT '1',
	`show_img_sig` TINYINT(1) NOT NULL DEFAULT '1',
	`show_avatars` TINYINT(1) NOT NULL DEFAULT '1',
	`show_sig` TINYINT(1) NOT NULL DEFAULT '1',
	`timezone` FLOAT NOT NULL DEFAULT '0',
	`language` VARCHAR(25) NOT NULL DEFAULT 'English',
	`style` VARCHAR(25) NOT NULL DEFAULT 'Oxygen',
	`num_posts` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`last_post` INT(10) UNSIGNED NULL DEFAULT NULL,
	`registered` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`registration_ip` VARCHAR(64) NOT NULL DEFAULT '0.0.0.0',
	`last_visit` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`admin_note` VARCHAR(30) NULL DEFAULT NULL,
	`activate_string` VARCHAR(50) NULL DEFAULT NULL,
	`activate_key` VARCHAR(8) NULL DEFAULT NULL,
	`reputation_enable` SMALLINT(6) NULL DEFAULT '1',
	`reputation_enable_adm` TINYINT(1) UNSIGNED NULL DEFAULT '1',
	`clone` INT(11) NULL DEFAULT '0',
	PRIMARY KEY (`id`),
	INDEX `users_registered_idx` (`registered`),
	INDEX `users_username_idx` (`username`(8)),
	INDEX `statidx` (`last_post`, `username`, `id`)
)
COLLATE='cp1251_general_ci'
ENGINE=MyISAM
ROW_FORMAT=FIXED
AUTO_INCREMENT=10203
;


таблица g
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
CREATE TABLE `groups` (
	`g_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
	`g_title` VARCHAR(50) NOT NULL DEFAULT '',
	`g_user_title` VARCHAR(50) NULL DEFAULT NULL,
	`g_read_board` TINYINT(1) NOT NULL DEFAULT '1',
	`g_post_replies` TINYINT(1) NOT NULL DEFAULT '1',
	`g_post_topics` TINYINT(1) NOT NULL DEFAULT '1',
	`g_post_polls` TINYINT(1) NOT NULL DEFAULT '1',
	`g_edit_posts` TINYINT(1) NOT NULL DEFAULT '1',
	`g_delete_posts` TINYINT(1) NOT NULL DEFAULT '1',
	`g_delete_topics` TINYINT(1) NOT NULL DEFAULT '1',
	`g_set_title` TINYINT(1) NOT NULL DEFAULT '1',
	`g_search` TINYINT(1) NOT NULL DEFAULT '1',
	`g_search_users` TINYINT(1) NOT NULL DEFAULT '1',
	`g_edit_subjects_interval` SMALLINT(6) NOT NULL DEFAULT '300',
	`g_post_flood` SMALLINT(6) NOT NULL DEFAULT '30',
	`g_search_flood` SMALLINT(6) NOT NULL DEFAULT '30',
	`g_rep_minus_min` INT(10) UNSIGNED NULL DEFAULT '0',
	`g_rep_plus_min` INT(10) UNSIGNED NULL DEFAULT '0',
	`g_rep_enable` SMALLINT(6) NULL DEFAULT '1',
	`g_post_comments` TINYINT(1) NOT NULL DEFAULT '1',
	`g_post_downloads` TINYINT(1) NOT NULL DEFAULT '1',
	`g_post_links` TINYINT(1) NOT NULL DEFAULT '1',
	`g_edit_comments` TINYINT(1) NOT NULL DEFAULT '1',
	`g_delete_downloads` TINYINT(1) NOT NULL DEFAULT '1',
	`g_delete_links` TINYINT(1) NOT NULL DEFAULT '1',
	PRIMARY KEY (`g_id`)
)
COLLATE='cp1251_general_ci'
ENGINE=MyISAM
ROW_FORMAT=FIXED
AUTO_INCREMENT=8
;


таблица p
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
CREATE TABLE `posts` (
	`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
	`poster` VARCHAR(200) NOT NULL DEFAULT '',
	`poster_id` INT(10) UNSIGNED NOT NULL DEFAULT '1',
	`poster_ip` VARCHAR(40) NULL DEFAULT NULL,
	`poster_email` VARCHAR(50) NULL DEFAULT NULL,
	`message` TEXT NOT NULL,
	`hide_smilies` TINYINT(1) NOT NULL DEFAULT '0',
	`posted` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`edited` INT(10) UNSIGNED NULL DEFAULT NULL,
	`edited_by` VARCHAR(200) NULL DEFAULT NULL,
	`topic_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`internal_id` INT(11) NULL DEFAULT NULL,
	`dl_id` INT(11) NULL DEFAULT NULL,
	`isocc` CHAR(2) NULL DEFAULT 'UN',
	PRIMARY KEY (`id`, `poster_id`),
	INDEX `posts_topic_id_idx` (`topic_id`, `id`),
	INDEX `posts_multi_idx` (`poster_id`, `topic_id`),
	INDEX `statidx` (`posted`),
	INDEX `statidx2` (`poster_id`, `posted`)
)
COLLATE='cp1251_general_ci'
ENGINE=MyISAM
ROW_FORMAT=FIXED
AUTO_INCREMENT=788013
;


таблица о
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE `online` (
	`user_id` INT(10) UNSIGNED NOT NULL DEFAULT '1',
	`ident` VARCHAR(200) NOT NULL DEFAULT '',
	`logged` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`idle` TINYINT(1) NOT NULL DEFAULT '0',
	`ip` VARCHAR(15) NULL DEFAULT NULL,
	INDEX `online_user_id_idx` (`user_id`)
)
COLLATE='cp1251_general_ci'
ENGINE=MEMORY
;


таблица r
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE TABLE `reputation` (
	`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
	`user_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`from_user_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`time` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`post_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`reason` TEXT NOT NULL,
	`rep_plus` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
	`rep_minus` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
	`topics_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	PRIMARY KEY (`id`),
	INDEX `rep_changes` (`rep_minus`, `rep_plus`, `user_id`),
	INDEX `rep_uid_only` (`user_id`),
	INDEX `rep_post` (`post_id`)
)
COLLATE='cp1251_general_ci'
ENGINE=MyISAM
ROW_FORMAT=FIXED
AUTO_INCREMENT=43387
;

...
Рейтинг: 0 / 0
26.10.2015, 00:04:18
    #39086277
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тормозят некоторые запросы форума punbb
Barvinok,

для начала уберите USING INDEX и сделайте ANALYSE TABLES.

потом можно сконцентрироватся на
ЛИМИТ ххххх, 50 -- сделать типа:

select ........... (только поля, БЕЗ sum())....
from post p
where p.category_id = 12345
order by p.id desc
limit 234546, 50

...а потом лефт джоинить всю остальную лабуду...включая SUM()...
...
Рейтинг: 0 / 0
26.10.2015, 09:53:42
    #39086428
Barvinok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тормозят некоторые запросы форума punbb
javajdbc,

USE INDEX убрал, ANALYZE TABLE везде выдаёт ОК.
Теперь вот что интересно обнаружилось. Запрос в таком виде (убрал внутренние select'ы, отвечающие за скрытых юзеров и подсчёт репутации)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, u.reputation_enable,
p.id, p.poster AS username, p.poster_id, p.poster_ip, LOWER(p.isocc) as isocc, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by,
g.g_id, g.g_user_title,
o.user_id AS is_online
FROM posts AS p
left JOIN users AS u ON u.id=p.poster_id
left JOIN groups AS g ON g.g_id=u.group_id
LEFT JOIN online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0)
WHERE p.topic_id=8993 ORDER BY p.id LIMIT 49550,50


отрабатывает вполне сносно -- 0.7 секунды.
Если вернуть параметры
Код: sql
1.
IsShielded(3,p.poster_id) AS shield, (select count(*) from reputation rp where rp.post_id = p.id) as repos


где функция IsShielded это
Код: sql
1.
RETURN (SELECT (COUNT(*)>0) FROM shield WHERE (owner=s_owner) AND (target=s_target))


то с ними исходный запрос крутится 3.5 секунды, а если вернуть любой из остальных двух подселектов
Код: sql
1.
2.
(select SUM(r1.rep_plus) from reputation r1 where r1.user_id = p.poster_id) as count_rep_plus,
(select SUM(r2.rep_minus) from reputation r2 where r2.user_id = p.poster_id) as count_rep_minus


то как раз и виснет на очень длительное время.
его explain
Код: plaintext
1.
2.
id;select_type;table;type;possible_keys;key;key_len;ref;rows;filtered;Extra
1;SIMPLE;r1;ref;rep_uid_only;rep_uid_only;4;const;1062;100.00;\N
то есть, в качестве временной меры можно отключить функцию репутации, но всё-таки хотелось бы понять где затык.
...
Рейтинг: 0 / 0
26.10.2015, 12:18:18
    #39086664
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тормозят некоторые запросы форума punbb
А если создать индексы reputation(user_id,rep_plus) и reputation(user_id,rep_minus)?
...
Рейтинг: 0 / 0
26.10.2015, 14:51:36
    #39086931
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тормозят некоторые запросы форума punbb
Barvinok , оработайте:

select p.id -- только ИД
from post p
where p.category_id = 8993
order by p.id desc
limit 25050, 50

наобум даю 5-20 милисекунд на эту операцию.

....потом подсоединяйте остальные таблицы
(включая еше раз post ) для вытаскивания всей остальной информации.
Подсоединяйте таблицы по одной и замеряйте время
(не забываем SQL_NO_CACHE).
Если заметите замедление -- выдавайте сюда время и ЕКСПЛАЙН до и после
замедления.
...
Рейтинг: 0 / 0
26.10.2015, 14:54:01
    #39086936
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тормозят некоторые запросы форума punbb
BarvinokПрошу прощения за некропостинг, но опять-таки тот же запрос и те же проблемы того же форума в связи с апгрейдом.

А можно узнать в связи с апгрейдом чего именно ?
можно же форум апргейдить. Разработчики обычно идут одной волной вперед. Новому mysql - новый форум и все должно быть нормально.
...
Рейтинг: 0 / 0
23.11.2015, 11:54:58
    #39110775
Barvinok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тормозят некоторые запросы форума punbb
Всем спасибо за полезные советы, пока что я просто отключил репутацию, так как форум переживает не лучшие времена и, скорее всего, скоро закроется.
"С апгрейдом" в смысле обновлением ОС и версии mysql.
А апгрейдить его нет смысла ещё и потому, что там очень много самописных функций, завязанных на исходники старой версии.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Тормозят некоторые запросы форума punbb / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]