Server shutdown in progress

  • Автор темы Автор темы trompert
  • Дата начала Дата начала

trompert

Guest
Server shutdown in progress

Впервые столкнулся с тем, что такой запрос с вероятностью 50% валит базу MySQL на мастерхосте.

$sql = "select DISTINCT dopolnit.* from dopolnit, hotel_uslugi, t_uslugi, dopolnit_hotel dh
where (t_uslugi.id = hotel_uslugi.uslugi_id
and dopolnit.id=t_uslugi.d_id
and hotel_uslugi.hotel_id='$id')
or (dh.h_id='$id' and dh.t_id=dopolnit.id)
order by dopolnit.id DESC";

Ошибка 1053: Server shutdown in progress.
Что не так?
 
show create table для всех таблиц в студию и цель данного запроса.
 
CREATE TABLE `dopolnit` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(50) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM

CREATE TABLE `hotel_uslugi` (
`id` int(10) unsigned NOT NULL auto_increment,
`hotel_id` int(11) NOT NULL default '0',
`uslugi_id` int(11) NOT NULL default '0',
`paid` enum('Y','N') NOT NULL default 'N',
PRIMARY KEY (`id`),
KEY `hotel_id` (`hotel_id`),
KEY `uslugi_id` (`uslugi_id`)
) TYPE=MyISAM

CREATE TABLE `t_uslugi` (
`id` int(10) unsigned NOT NULL auto_increment,
`d_id` int(11) NOT NULL default '0',
`name` varchar(50) NOT NULL default '',
PRIMARY KEY (`id`),
KEY `d_id` (`d_id`)
) TYPE=MyISAM

CREATE TABLE `dopolnit_hotel` (
`id` int(10) unsigned NOT NULL auto_increment,
`h_id` int(11) NOT NULL default '0',
`t_id` int(11) NOT NULL default '0',
`name` varchar(50) NOT NULL default '',
`paid` enum('Y','N') NOT NULL default 'N',
PRIMARY KEY (`id`),
KEY `h_id` (`h_id`),
KEY `t_id` (`t_id`)
) TYPE=MyISAM

Цель запроса:
1. выбрать из таблицы dopolnit типы услуг, которые есть в таблице hotel_uslugi. Сами услуги в таблице t_uslugi и связаны через hotel_uslugi с самим отелем.
2. Выбрать те типы услуг, которые отвечают за услуги находящиеся в dopolnit_hotel; dopolnit.t_id - ID типа услуги из таблицы dopolnit .
Нужно выбрать все виды услуг подходящие под оба пункта.

-~{}~ 15.03.04 23:29:

Originally posted by Апельсин
кто-то прибил твой запрос.
ага... сидит пьяный админ в серверной и не попадая на кнопки раз в 20 секунд запросы прибивает. :)
 
> ага... сидит пьяный админ в серверной и не попадая на кнопки раз в 20 секунд запросы прибивает.

админ, не админ, но подобная ошибка вылезает либо когда сервер перегружается (а что бы убедиться в этом тебе надо с хостером связываться), либо когда кто-то прибивает выполнение твоего запроса (и для этого тебе опять таки с хостером надо связываться).
 
Апельсин

Немного не в тему, можешь ткнуть меня носом, как посмотреть
текущие запросы, сколько времени они исполняются и как их прибивать.
 
такая ошибка появляется при выполнении слишком долгого запроса
 
Апельсин

Danke.

Только вто теперь в непонятках, висят 150 конекшенов в режиме sleep , а сам mysqld жрет 90% CPU (P3 700Mhz x 2)
 
Falc

Где как, там несколько сайтов, но судя по полю User и Db
основная масса конектов висит из cyrus_sasl а как там что
я не в курсе....

Хотя с чего это он должен так грузить процессор, запросы там - тупые SELECT'ы.

P.s: прошелся grep'ом по всем местам - перебил pconnect на connect где встретил, результат кординально не изменился.
 
ys
>>P.s: прошелся grep'ом по всем местам - перебил pconnect на connect где встретил, результат кординально не изменился.

А ты поубивал спящие коннекты?

Нагрузку на проц спящие коннекты давать не должны, но вот память кушать будут.
 
Originally posted by Altex
такая ошибка появляется при выполнении слишком долгого запроса
Да, все правильно, запрос выполняется долго. Иногда. Но почему, вот что интересно...
На кривые скрипты думать не надо, проверял тот же запрос в Phpmyadmin - те же тормоза...
 
> FreeBSD 4.7-STABLE

а .. ну это смахивает на известную старая проблему ..
попробуй запустить MySQL с опцией --skip-name-resolve

-~{}~ 16.03.04 14:40:

> На кривые скрипты думать не надо, проверял тот же запрос в Phpmyadmin - те же тормоза...

да причем тут скрипты, ты свой запрос оптимизируй. Индексы, EXPLAIN и вперед. OR через UNION переписать можешь, если версия позволяет.
 
Апельсин

Поставил, вроде помогло.
В течении 2 часов нагрузка на уровне 12%-20% .
 
Originally posted by Апельсин
да причем тут скрипты, ты свой запрос оптимизируй. Индексы, EXPLAIN и вперед. OR через UNION переписать можешь, если версия позволяет. [/B]
Union использовать не могу. Просто разбил свой запрос на 2 и все залетало. И чем MySQL так OR не нравится?
 
> И чем MySQL так OR не нравится?

он ему нравится, но до версии 5.0.0 он не оптимизирует запросы подобного вида.
 
Сверху