Реально надоело, но с винды уходить не хочется.
Непонятно, где косяк в настройках MySQL. Памяти хватает, даже поставил eaccelerator,но все равно не помогло. Пробовал пересоздать базу, мало ли, где то таблицы с ошибками или еще что нить в таком духе, тоже эффекта никакого.
В общем, други, нужны дельные советы! Куда глядеть, что править?
Вложение | Размер |
---|---|
my.ini_.txt | 5.63 КБ |
php.ini_.txt | 48.94 КБ |
Комментарии
поставьте devel, посмотрите какие запросы тормозят
да я боюсь тут дело даже не в какаих то запросах, а в конфигурационных файлах... ведь то же самое на ubuntu работает как часы, да и на другой виндовой машине траблов таких не было замечено...
сравните конфиги, в чём сложность?
Посмотрел на скорость выполнения запросов на нотике и PC, разница весьма и весьма существенная, видать все таки что то в конфигах. буду сравнивать
Мускуль + Винда сам по себе тормоз ещё тот, хотя в 5.5 обещают прирост
Запросы показали бы. Как то не замечено было на локалке особых тормозов в том же денвере...
А ты на том же компе в Ubuntu/Debian пробовал? Я даже на глаз вижу разницу, когда перегружаюсь из винды в Ubuntu
Да неужели?
по просьбам трудящихся, такой запрос выполняется за 24867.67 ms, на Ubuntu раз в 10ть быстрее...
SELECT DISTINCT node.nid AS nid, node.title AS node_title, node.language AS node_language, node.type AS node_type, users.name AS users_name, users.uid AS users_uid, node.created AS node_created, votingapi_cache_node_percent_average.value AS votingapi_cache_node_percent_average_value, votingapi_cache_node_count.value AS votingapi_cache_node_count_value, node_counter.totalcount AS node_counter_totalcount, node_comment_statistics.comment_count AS node_comment_statistics_comment_count, node.vid AS node_vid FROM node node LEFT JOIN votingapi_cache votingapi_cache_node_percent_average ON node.nid = votingapi_cache_node_percent_average.content_id AND (votingapi_cache_node_percent_average.content_type = 'node' AND votingapi_cache_node_percent_average.value_type = 'percent' AND votingapi_cache_node_percent_average.function = 'average') LEFT JOIN votingapi_cache votingapi_cache_node_count ON node.nid = votingapi_cache_node_count.content_id AND (votingapi_cache_node_count.content_type = 'node' AND votingapi_cache_node_count.function = 'count') LEFT JOIN node node2 ON node.tnid = node2.tnid INNER JOIN content_type_image node_data_field_private_flag ON node.vid = node_data_field_private_flag.vid INNER JOIN users users ON node.uid = users.uid LEFT JOIN node_counter node_counter ON node.nid = node_counter.nid INNER JOIN node_comment_statistics node_comment_statistics ON node.nid = node_comment_statistics.nid WHERE (node.type in ('image')) AND (node_data_field_private_flag.field_private_flag_value = 0) ORDER BY node_created DESC LIMIT 0, 10
такое чувство, что для формирования объединений пользуется винт вместо оперативки, поэтому то и тормозит... буду сравнивать конфиги
Проблема оказалась достаточно простой - длина ключей для строковых параметров таблицы votingapi_cache, после того, когда я задал их величину в 5 символов, то скорость поиска изменилась где то в 440 раз...
Видимо надо будет набросать простенький update для таблиц votingapi и votingapi_cache, чтобы поправить индексы, ну и запостить это дело на drupal.org
Примерно с таблицами получилось это:
CREATE TABLE `votingapi_cache` (
`vote_cache_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`content_type` varchar(64) NOT NULL DEFAULT 'node',
`content_id` int(10) unsigned NOT NULL DEFAULT '0',
`value` float NOT NULL DEFAULT '0',
`value_type` varchar(64) NOT NULL DEFAULT 'percent',
`tag` varchar(64) NOT NULL DEFAULT 'vote',
`function` varchar(64) NOT NULL DEFAULT '',
`timestamp` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`vote_cache_id`),
KEY `content_tag_func` (`content_type`,`content_id`,`tag`,`function`),
KEY `content_function` (`content_type`(5),`content_id`,`function`(5)),
KEY `content_vtype_tag` (`content_type`(5),`content_id`,`value_type`(5),`tag`(5)),
KEY `content_vtype_tag_func` (`content_type`(5),`content_id`,`value_type`(5),`tag`(5),`function`(5)),
KEY `content` (`content_type`(5),`content_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3899 DEFAULT CHARSET=utf8;
На убунте кстати та же фигня, так что я набросаю сначала sql скрипты для update, а затем м.б. напишу простенький модуль, посмотрим...
Косяк оказался куда глубже - в модуле views где то есть проблема, которая выражается в том, что создается дополнительный join таблицы node с сама самой по полю tnid ( LEFT JOIN node node2 ON node.tnid = node2.tnid надо для синхронизации переводов контента на разные языки). Все бы хорошо, да вот не использую я такую фичу, это видно и по самому запросу.
Временный workaround - закоментить файл translation.views.inc на __translation.views.inc и сбросить кеш.
по ходу дела проблема известная:
http://drupal.org/node/940268
http://drupal.org/node/904038
и т.д. - http://drupal.org/search/apachesolr_multisitesearch/node2.tnid%20views
Так что если у вас появилась проблема с производительностью, то весьма возможно это как раз ваш случай