Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте, погите нубу, нужна оптимизация БД
Использую MySQL 5 и движок DLE (DataLife Engine) 8.5
Есть лог медленных запросов:
from dle_category ct;
# Time: 100412 0:58:19
# User@Host: ankovalev[ankovalev] @ localhost []
# Thread_id: 10334632 Schema: ankovalev
# Query_time: 3.256909 Lock_time: 0.000151 Rows_sent: 0 Rows_examined: 638523 Rows_affected: 0 Rows_read: 11824
use ankovalev;
SET timestamp=1271019499;
select ct.id,
(select count(*) from dle_post ps where (ps.category REGEXP concat( '^(' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ')$' ) or ps.category=ct.id) AND (DATE_FORMAT(date, '%Y%m%d')=CURDATE()) AND approve = '1') as new_,
(select count(*) from dle_post ps where (ps.category REGEXP concat( '^(' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ')$' ) or ps.category=ct.id) AND approve = '1') as allnews_
from dle_category ct;
# Time: 100412 0:58:25
# User@Host: ankovalev[ankovalev] @ localhost []
# Thread_id: 10334747 Schema: ankovalev
# Query_time: 3.225991 Lock_time: 0.000130 Rows_sent: 0 Rows_examined: 638523 Rows_affected: 0 Rows_read: 11824
use ankovalev;
SET timestamp=1271019505;
select ct.id,
(select count(*) from dle_post ps where (ps.category REGEXP concat( '^(' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ')$' ) or ps.category=ct.id) AND (DATE_FORMAT(date, '%Y%m%d')=CURDATE()) AND approve = '1') as new_,
(select count(*) from dle_post ps where (ps.category REGEXP concat( '^(' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ')$' ) or ps.category=ct.id) AND approve = '1') as allnews_
from dle_category ct;
# Time: 100412 0:58:31
# User@Host: ankovalev[ankovalev] @ localhost []
# Thread_id: 10334837 Schema: ankovalev
# Query_time: 3.605283 Lock_time: 0.000096 Rows_sent: 0 Rows_examined: 638523 Rows_affected: 0 Rows_read: 11824
use ankovalev;
SET timestamp=1271019511;
select ct.id,
(select count(*) from dle_post ps where (ps.category REGEXP concat( '^(' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ')$' ) or ps.category=ct.id) AND (DATE_FORMAT(date, '%Y%m%d')=CURDATE()) AND approve = '1') as new_,
(select count(*) from dle_post ps where (ps.category REGEXP concat( '^(' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ')$' ) or ps.category=ct.id) AND approve = '1') as allnews_
все они однотипные
Вообщем, не знаю что делать и надежда только на Вас
Неактивен
Я понимаю, что рекомендация отказаться от движка — это не то, что сделает человек
сразу же Тем не менее, поглядите на этом форуме в поиске количество проблем с
DLE, и количество проблем с другими CMS.
Ну и из разумного: если бы всё работало, Вы бы сюда не пришли, верно?
Запросы, которые лежат у Вас в логе, не поддаются никакой оптимизации. Можно про-
бовать их переписать со стороны CMS, но это занятие неблагодарное. Впрочем, можете
попробовать. Мы переписывать этот движок не будем, т.к. FAQ#10 появился неспроста,
но на конкретные вопросы (если Вы решитесь переписывать его сами), разумеется,
ответим.
Неактивен
ОФФТОП: Забавно никогда до посещения этого форума про DLE не слыхивал, а зачем ее вообще применяют? По частоте возникновения проблем - это бесспорный лидер .
Неактивен
FiMko написал:
ОФФТОП: Забавно никогда до посещения этого форума про DLE не слыхивал, а зачем ее вообще применяют? По частоте возникновения проблем - это бесспорный лидер .
Более 70% сайтов рунета это движок DLE... стыдно, стыдно товарищи...
Отредактированно pernatik (13.04.2010 19:11:23)
Неактивен
Понял в чем проблема, ошибка в самописном модуле
(модуль выводит количество новостей всего и добавленных за сегодня в меню сайта)
Был вывод 1 тегом, я переделал на 2 тега чтоб красивее было(видно не доделал)
/*********Главное меню**********/
$count_news = dle_cache( "count_news_of_category", $config[’skin’] );
if( !$count_news )
{
//кэш с количеством новостей пуст
$sql_result = $db->query("select ct.id,
(select count(*) from ". PREFIX ."_post ps where (ps.category REGEXP concat( '^(' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ')$' ) or ps.category=ct.id) AND (DATE_FORMAT(date, '%Y%m%d')=CURDATE()) AND approve = '1') as new_,
(select count(*) from ". PREFIX ."_post ps where (ps.category REGEXP concat( '^(' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ')$' ) or ps.category=ct.id) AND approve = '1') as allnews_
from ". PREFIX ."_category ct"
);
$count_news_of_category = '';
while($row = $db->get_row($sql_result))
{
$tpl->set('{newcount_categ_'.$row['id'].'}', $row['new_']);
$tpl->set('{allcount_categ_'.$row['id'].'}', $row['allnews_']);
}
/**В кэш **/
create_cache( 'count_news_of_category', $count_news_of_category);
$db->free();
}
else
{
//достанем количество новостей из кэша
$arr_newscount = explode('|', $count_news);
for ($i = 0; $i <= count($arr_newscount) - 2; $i++)
{
$arr_onenews = explode('#', $arr_newscount[$i]);
$tpl->set('{count_categ_'.$arr_onenews[0].'}', $arr_onenews[1]);
}
}
/************************************/
Неактивен
А вот интересно, почему люди выбирают DLE?
Мое личное мнение такое: он официально стоит денег, а на шареварных сайтах его
выкладывают достаточно регулярно. Вот битрикс, например, который тоже стоит денег,
не выкладывают на шареварных сайтах ⇒ его меньше на сайтах «сделай.сам».
Любят в России пиратщину
Неактивен
Почему выбирают DLE???
1. В сравнении с другими CMS дает меньшую нагрузку на MySQL сервер (Для примера сайт на ДЛЕ с посещалкой больше 1000 давал меньше нагрузки на хостинг чем сайт на вордпресе с посещалкой чуть больше 300...)
2. Удобная во всех смыслах этого слова
3. Много шаблонов
4. Самое то для варез сайтов, музыки, софта и т.д. (журналистов не составит найти труда, которые будут постить бесплатно)
5. Много модулей
Опять же есть 1 существенный минус - это защита скрипта, но если есть моск, то не составит труда дороботать самостоятельно двиг
Неактивен
paulus написал:
Вот битрикс, например, который тоже стоит денег,
не выкладывают на шареварных сайтах ⇒ его меньше на сайтах «сделай.сам».
3 года назад я смотрел на Битрикс - у него была ужасная архитектура. Как преимущество тогда называлось, что у него есть описание на 800 страниц (столько же, сколько мануал MySQL). Может быть после покупки его 1С что-то изменилось.
Из коммерческих адекватных CMS мне больше всего понравилась umi.cms, адекватные люди писали.
А насчет Open Source (все ИМХО)
DLE лидер нашего форума по нестыковкам и багам.
Joomla написана совершенно странно и с точки зрения безопасности, интерфейса и производительности. Плохо все.
Drupal хорошо написан, но сложно с ним обращаться (нужно программировать логику). Производительность у него хорошая.
Wordpress оптимален по интерфейсу, стандарты соблюдаются, написано все достаточно ясно. Если мне нужен пример ясного и понятного длинного запроса, совершенно не оптимального по производительности, достаточно посмотреть лог медленных запросов Wordpress.
Оптимизировать запросы CMS дело тяжелое. Не меняя структуру БД и функционал сайта изменить запросы тяжело. В ряде случаев можно запрос разбить на два, а в случае WordPress можно для конкретных страниц отказаться от общей схемы формирования запроса и вписать его руками для частного случая. Часто бывает, что тормозит не сама CMS, а ее модули, в этом случае проще.
Неактивен
WordPress — это, конечно, не аналог для сравнения
А давайте тогда в FAQ пропагандировать umi.cms? Она, правда, платная...
Надо джангу пропихивать
Неактивен