В коде тракера есть такой камент:
// TODO: These queries are very expensive, see http://drupal.org/node/105639
И в новости Improvements to the Drupal.org infrastructure говориться: «Installed a different tracker patch that hopefully displays better results.», советую пропатчиться, разница заметна, по крайней мере на крупных сайтах.
Теперь хочу memcache установить себе
Комментарии
Раз уж упомянули про патч и его преимущества - коротенько опишите, что там такое. Какие преимущества, ставили ли сами и т.п.
Сэкономите другим время на чтение и перевод, а себе начнете потихоньку обеспечивать вечную память благодарных потомков.
Полезная статья. Очень интересует оптимизация производительности.
В комментариях в tracker.module написано, что запрос, который выводит страницу тракера, очень ресурсоемкий и его нужно «улучшить».
Патч сокрощает скорость выполнения ресурсоемкого SQL запроса в два раза.
Автор патча обратился за помощью к чувакам из MySQLPerformanceBlog и они, детально изучив проблему и SQL запросы, посоветовали переделать запросы используя UNIONы.
Результаты тестов были получены на сайте с 10.000 нодов и 10.000 комментариев, перегружая MySQL сервер между тестами, чтобы все было «по свежему».
До патча
ms # where query
874.04 1 pager_query SELECT DISTINCT(n.nid), n.title, n.type, n.changed, n.uid, u.name, GREATEST(n.changed, l.last_comment_timestamp) AS last_updated, l.comment_count FROM node n INNER JOIN node_comment_statistics l ON n.nid = l.nid INNER JOIN users u ON n.uid = u.uid LEFT JOIN comments c ON n.nid = c.nid AND (c.status = 0 OR c.status IS NULL) WHERE n.status = 1 AND (n.uid = 1 OR c.uid = 1) ORDER BY last_updated DESC LIMIT 0, 25
296.64 1 pager_query SELECT COUNT(DISTINCT(n.nid)) FROM node n LEFT JOIN comments c ON n.nid = c.nid AND (c.status = 0 OR c.status IS NULL) WHERE n.status = 1 AND (n.uid = 1 OR c.uid = 1)
С патчем используя original count query
ms # where query
363.42 1 pager_query (SELECT n.nid, n.title, n.type, n.changed, n.uid, u.name, GREATEST(n.changed, l.last_comment_timestamp) AS last_updated, l.comment_count FROM users u JOIN node n ON n.uid = u.uid JOIN node_comment_statistics l ON l.nid = n.nid WHERE n.status = 1 AND n.uid = 1) UNION (SELECT n.nid, n.title, n.type, n.changed, n.uid, u.name, GREATEST(n.changed, l.last_comment_timestamp) AS last_updated, l.comment_count FROM users u JOIN comments c ON c.uid = u.uid JOIN node n ON n.nid = c.nid JOIN node_comment_statistics l ON l.nid = n.nid WHERE n.status = 1 AND c.status = 0 AND c.uid = 1) ORDER BY last_updated DESC LIMIT 0, 25
146.03 1 pager_query SELECT COUNT(DISTINCT(n.nid)) FROM node n LEFT JOIN comments c ON n.nid = c.nid AND (c.status = 1 OR c.status IS NULL) WHERE n.status = 1 AND (n.uid = 0 OR c.uid = 1)
С патчем используяю Union для count query
У автора получились не очень хорошие результаты, но он считает что результаты могут быть лучше (кто знает что такое d.o. Data Out?)
ms # where query
446.17 1 pager_query (SELECT DISTINCT(n.nid), n.title, n.type, n.changed, n.uid, u.name, GREATEST(n.changed, l.last_comment_timestamp) AS last_updated, l.comment_count FROM users u JOIN node n ON n.uid = u.uid JOIN node_comment_statistics l ON l.nid = n.nid WHERE n.status = 1 AND n.uid = 1) UNION (SELECT DISTINCT(n.nid), n.title, n.type, n.changed, n.uid, u.name, GREATEST(n.changed, l.last_comment_timestamp) AS last_updated, l.comment_count FROM users u JOIN comments c ON c.uid = u.uid JOIN node n ON n.nid = c.nid JOIN node_comment_statistics l ON l.nid = n.nid WHERE n.status = 1 AND c.status = 0 AND c.uid = 1) ORDER BY last_updated DESC LIMIT 0, 25
338.77 1 pager_query SELECT SUM(cnt) FROM ((SELECT COUNT(DISTINCT(n.nid)) AS cnt FROM users u JOIN node n ON n.uid = u.uid WHERE n.status = 1 AND u.uid = 1) UNION (SELECT COUNT(DISTINCT(n.nid)) AS cnt FROM users u JOIN comments c ON c.uid = u.uid JOIN node n ON n.nid = c.nid WHERE c.status = 0 AND n.status = 1 AND u.uid = 1)) AS sum_cnt
Я его установил на «Италия по-русски», разница чувствуется.
Спасибо. Действительно, интересные данные.
Есть одно но, если смотреть «мои сообщения» то автор всех тем становишься ты, исчезает пэйджер. Но я не уточнил что я ставил этот патч на 4.7, а он для 5.0
интересный патч, надо попробовать
поставил
авторы корректно отображаются
вроде стало быстрее, но мне сложно сравнивать
НО я верю друпальцам
авторы корректно отображаются
На пятой версии? А снизу pagination есть?
не знаю кто такие пагинашен
вот мой трекер
постраничный вывод.
ну вроде у меня он "каким ты был, таким остался"
Отлично, значит патч не совместим с 4.7, я просто структуры баз данных не сравнивал и на пятую версию не ставил его (интересно почему?), чтоб понять это.
У кого нить будут обьективные, а может даже обоснованные (?) мысли по поводу нужности патча?
lsass, смотри скорость query с и без патча.