SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 26.09.2012 16:55:10

macr0s
Участник
Зарегистрирован: 26.09.2012
Сообщений: 4

непонятные падения mysql

Сервер ложится после второго вызова моей хранимки. Помогите понять почему.

тело хранимки:


BEGIN
    set names utf8;
   
    create temporary table if not exists t_order_dep (tId integer,ordr integer);
    create temporary table if not exists t_order_arr (tId integer,ordr integer);
   
    truncate table t_order_dep;
    truncate table t_order_arr;
   
    insert into t_order_dep
        SELECT
            arrivalId as tId,
            count(arrivalId) as ordr
        FROM SubTrips
        where tripId = trip_ID
        group by tId
        union all
        select distinct departureId,0
        FROM SubTrips
        where tripId = trip_ID
            and departureId not in (select arrivalId from SubTrips where tripId = trip_ID)
        order by ordr
                    and departureId not in (select arrivalId from SubTrips where tripId = trip_ID) ;
   
    insert into t_order_arr select * from t_order_dep;
   
    select ordr into @dep_town_ID_order from t_order_dep where tId=dep_town_ID limit 1;
    select ordr into @arr_town_ID_order from t_order_dep where tId=arr_town_ID limit 1;
   
    select
        s.*
    from Receipts r
    inner join Seats s on r.seatId=s.id
    inner join TripsSchedule ts on s.TSId=ts.id
    inner join SubTrips st on s.SubTripId=st.id
    inner join t_order_arr on t_order_arr.tId=st.arrivalId
    inner join t_order_dep on t_order_dep.tId=st.departureId
    where ts.TripId=trip_ID and date(s.TripDate)=date(first_dt) and time(ts.FirstDepartureTime)=time(first_dt)
        and t_order_dep.ordr >= @dep_town_ID_order and t_order_arr.ordr <= @arr_town_ID_order;
       
    set error_id=0;
END
 

Индексов в таблицах нет., кроме первичных ключей.
в логах каждый раз то же самое:

mysql.log написал:

.......
120926 15:51:14      463 Init DB    c1office24_vlast
          463 Query    CALL `c1office24_vlast`.`sp_seats_get_st`(@_cnet_param_ERROR_ID, 22, 1, 3, '2012-09-24 00:00:00');SELECT @_cnet_param_ERROR_ID
120926 15:51:22      465 Init DB    c1office24_vlast
          465 Query    CALL `c1office24_vlast`.`sp_seats_get_st`(@_cnet_param_ERROR_ID, 19, 1, 5, '2012-09-24 00:00:00');SELECT @_cnet_param_ERROR_ID
/usr/sbin/mysqld, Version: 5.5.24-0ubuntu0.12.04.1-log ((Ubuntu)). started with:
Tcp port: 3306  Unix socket: /var/run/mysqld/mysqld.sock
Time                 Id Command    Argument
120926 15:51:25        1 Connect    debian-sys-maint@localhost on 
....

Вызов хранимки идет через MySQLConnector. То же самое при использовании MySQL Workbench или phpMyAdmin. Никаких ошибок мне не выдает, просто падает и какое-то время не коннектится. Кроме этих логов не знаю, что еще посмотреть можно, чтобы хотя бы приблизиться к пониманию причин сбоя, 3й день уже пляски с бубнами разного диаметра... Сервер падает как под Windows так и под Ubuntu. Сейчас работает на убунте, потомучто поднимается побыстрее после падения (винда перезапускает сервис где-то через минуту после падения).
В какую сторону смотреть?

Неактивен

 

#2 26.09.2012 17:03:51

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: непонятные падения mysql

Вызовите процедуру в консоли MySQL и посмотрите что будет. В другой консоли можно смотреть SHOW FULL PROCESSLIST пока процедура выполняется, но еще не упала.

Неактивен

 

#3 26.09.2012 17:23:34

macr0s
Участник
Зарегистрирован: 26.09.2012
Сообщений: 4

Re: непонятные падения mysql

консолька написал:

mysql> call c1office24_vlast.sp_seats_get_st(@err,19,1,42,'2012-09-24 00:00:00');
+----+------+------------+-----------+-------------+-----------+---------------------+
| id | TSId | SeatNumber | SeatState | PassengerId | SubTripId | TripDate            |
+----+------+------------+-----------+-------------+-----------+---------------------+
| 69 |   45 |          1 |         3 |         211 |         6 | 2012-09-24 00:00:00 |
| 70 |   45 |          5 |         3 |         212 |        11 | 2012-09-24 00:00:00 |
| 74 |   46 |         10 |         3 |         214 |        12 | 2012-09-24 01:10:00 |
+----+------+------------+-----------+-------------+-----------+---------------------+
3 rows in set (0.03 sec)

Query OK, 0 rows affected (0.03 sec)

Неактивен

 

#4 26.09.2012 17:26:42

macr0s
Участник
Зарегистрирован: 26.09.2012
Сообщений: 4

Re: непонятные падения mysql

консолька написал:

mysql> call c1office24_vlast.sp_seats_get_st(@err,19,1,42,'2012-09-24 00:00:00');
ERROR 2013 (HY000): Lost connection to MySQL server during query

собсон второй вызов забыл отпостить сразу

Неактивен

 

#5 27.09.2012 01:27:14

macr0s
Участник
Зарегистрирован: 26.09.2012
Сообщений: 4

Re: непонятные падения mysql

После внимательного пересмотра и рефакторинга хранимки проблема решилась.

insert into t_order_dep
         SELECT
             arrivalId as tId,
             count(arrivalId) as ordr
         FROM SubTrips
         where tripId = trip_ID
         group by tId
         union all
         select distinct departureId,0
         FROM SubTrips
         where tripId = trip_ID
             and departureId not in (select arrivalId from SubTrips where tripId = trip_ID)
         order by ordr
                     and departureId not in (select arrivalId from SubTrips where tripId = trip_ID) ;

заменил на
insert into t_order_dep
        SELECT
            arrivalId as tId,
            count(arrivalId) as ordr
        FROM SubTrips
        where tripId = trip_ID
        group by tId ;

    insert into t_order_dep
        select distinct departureId,0
        FROM SubTrips
        where tripId = trip_ID
            and departureId not in (select arrivalId from SubTrips where tripId = trip_ID);

Странно, что синтаксический анализатор проглотил первоначальный бред...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson