Server shutdown in progress

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.
Что не так?
 

Demiurg

Guest
show create table для всех таблиц в студию и цель данного запроса.
 

trompert

Guest
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 секунд запросы прибивает.

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

ys

отодвинутый новичок
Апельсин

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

Altex

Новичок
такая ошибка появляется при выполнении слишком долгого запроса
 

ys

отодвинутый новичок
Апельсин

Danke.

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

ys

отодвинутый новичок
Falc

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

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

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

Falc

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

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

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

trompert

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

Апельсин

Оранжевое создание
> FreeBSD 4.7-STABLE

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

-~{}~ 16.03.04 14:40:

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

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

ys

отодвинутый новичок
Апельсин

Поставил, вроде помогло.
В течении 2 часов нагрузка на уровне 12%-20% .
 

trompert

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

Апельсин

Оранжевое создание
> И чем MySQL так OR не нравится?

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