Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > тормозит запрос. что в нем не так?


Автор: MOP 4.12.2006, 21:45
сегодня пришло письмо от хостера (http://freehost.com.ua)

Цитата

Здравствуйте!

Пожалуйста пересмотрите запросы к базе данных на своем сайте и ее
структуру. Они отрабатываются достаточно медленно. Вот пример запросов:

rolaboratory_a  erolaboratory_content   37      Locked  SELECT DISTINCT
DAYOFMONTH(date) as tmp FROM qn_Stories WHERE date >= '2006-12-1' && date <
'2006-13-1' && checked = "true"     1105213
erolaboratory_a erolaboratory_content   51      Locked  SELECT * FROM
`qn_Stories` WHERE id='4925' LIMIT 1      1108336 
erolaboratory_a erolaboratory_content   73      Locked  SELECT COUNT(s.id) as
count FROM `qn_Stories` as s, qn_Story_topics as st WHERE s.date <= NOW() AND
s.checked='true' AND s.id = st.story_id AND st.topic_id = '7'       1107850 
erolaboratory_a erolaboratory_content   74      Locked  SELECT DISTINCT
DAYOFMONTH(date) as tmp FROM qn_Stories WHERE date >= '2006-12-1' && date <
'2006-13-1' && checked = "true"     1103387 
erolaboratory_a erolaboratory_content   75      Locked  SELECT DISTINCT
DAYOFMONTH(date) as tmp FROM qn_Stories WHERE date >= '2006-12-1' && date <
'2006-13-1' && checked = "true"     1107076 
erolaboratory_a erolaboratory_content   75      Locked  SELECT LENGTH(text) as
len FROM `qn_Stories` WHERE id='454'     1105917 
erolaboratory_a erolaboratory_content   75      Locked  UPDATE qn_Stories SET
views=views+1 WHERE id='708'      1107300 
erolaboratory_a erolaboratory_content   75      Locked  UPDATE qn_Stories SET
views=views+1 WHERE id='7367'     1107131 
erolaboratory_a erolaboratory_content   75      Locked  UPDATE qn_Stories SET
views=views+1 WHERE id='7433'

Приятной работы!

-- 
С уважением,
 Евгений Шерман                          mailto:service@freehost.com.ua
 FREEhost.com.ua
 ICQ: 294335977
 (044) 451-53-42


Я конечно не супер професионал... но мне просто интересно... как запрос
Код

SELECT * FROM `qn_Stories` WHERE id='4925' LIMIT 1


Может выполняться больше минуты?
id - первичный ключ.

Если у кого-то есть мысли, что не так, подскажите пожалуйста, что делать. Что надо менять... буду благодарен за развернутый ответ...

Автор: muzer 4.12.2006, 22:05
Пошлите хостера в...маны..
Там у всех запросов написан статус LOCKED, это означает что они не выполняются (соответственно и сервер не грузят), а ждут пока будет разлочена какая-то из таблиц, необходимых для выполнения запроса. Чтобы определить какой запрос долго висит, надо бы видеть show processlist по всем запросам, а не по залоченным.

LOCKED бывает, например, если:
1. какой-то процесс явно залочил таблицу командой LOCK TABLE
2. какой-то процесс пишет или меняет данные в таблице

Автор: MOP 4.12.2006, 22:09
Цитата(muzer @  4.12.2006,  21:05 Найти цитируемый пост)
ой-то процесс пишет или меня


спасибо тебе за ответ!

Может еще кто-то выскажется? если согласны с предидущим постом, просто напишите.... плз

Автор: Bulat 5.12.2006, 08:27
Цитата(MOP @  4.12.2006,  22:09 Найти цитируемый пост)
Может еще кто-то выскажется? если согласны с предидущим постом, просто напишите.... плз 

по тому что есть, пока сказать что-то более сложновато smile 

Автор: Vaulter 5.12.2006, 15:20
таблицы myISAM?
менять на InnoDB

Автор: muzer 6.12.2006, 14:36
Цитата(Vaulter @  5.12.2006,  16:20 Найти цитируемый пост)
менять на InnoDB

Ага, чтобы те апдейты и инсерты, которые мы так и не увидели, ещё больше тормозили smile
Вы когда советуете хотя б сообщайте о минусах того, что советуете.

Понятно же, что сервер хостера напрягается не от этих селектов, а от того, кто их залочил. На InnoDB эти селекты быстренько проскочат, а проблема останется)

Добавлено @ 14:40 
MOP, кстати, а покажите структуру таблицы..
какой тип у поля date и какой тип у поля checked? Там в селекте вижу checked = "true", уж не варчаром ли вы битовое поле храните? smile

Автор: Vaulter 6.12.2006, 14:47
muzer, так скорее всего проблема как в том, что таблицы залочены другим запросом SELECT 
при InnoDB такого не будет - проблемы не будет.
на загруженных сайтах SELECTы - это 98% запросов к серверу когда как Update и Insert остальное.
где Ваша логика?

Автор: MOP 9.12.2006, 02:21
Сильно много извиняюсь за задержку ))

вот логика:

Код

CREATE TABLE `qn_stories` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `title` varchar(255) collate utf8_unicode_ci NOT NULL default '***',
  `review` text collate utf8_unicode_ci,
  `text` text collate utf8_unicode_ci,
  `date` date NOT NULL default '0000-00-00',
  `views` int(11) NOT NULL default '0',
  `rank` double NOT NULL default '0',
  `marks` int(11) NOT NULL default '0',
  `author_user_id` int(11) default NULL,
  `author_name` varchar(255) collate utf8_unicode_ci default NULL,
  `checked` enum('true','false') collate utf8_unicode_ci NOT NULL default 'false',
  `text_plugin` varchar(255) collate utf8_unicode_ci NOT NULL default 'text',
  `review_plugin` varchar(255) collate utf8_unicode_ci NOT NULL default 'text',
  `allow_rss` enum('Y','N') collate utf8_unicode_ci NOT NULL default 'Y',
  `template` varchar(50) collate utf8_unicode_ci default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
 

всем участникам большое спасибо )) не останавливайтесь, продолжайте обсуждать ))

(Действительно у меня MyISAM в таблице... Щас подробно прочитаю мануал...)

оффтоп: просто поражает отношение хостера... ему деньги платят, а он спама пришлет, сайты отключит, и умным себя считает...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)