Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MySQL Locks / 7 сообщений из 7, страница 1 из 1
10.06.2014, 15:31:16
    #38666498
Moniak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MySQL Locks
доброй времени суток всем.
прощу помощи )
есть 2 процедуры 1 работает постоянно и меняет некоторые данные в таблице клиентов
2-й только рассчитывает данные

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DROP TEMPORARY TABLE IF EXISTS tmp_GROUPS;
CREATE TEMPORARY TABLE tmp_GROUPS 
(GROUPS_ID int,MAIL_COUNT int,SMS_COUNT int) ENGINE=MyISAM ;

insert into tmp_GROUPS(GROUPS_ID ,MAIL_COUNT ,SMS_COUNT )
(select g.GROUPS_ID as 'GROUPS_ID', count(distinct t.EMAIL) as 'MAIL_COUNT' ,count( distinct t.PHONE) as 'SMS_COUNT'
from CLIENT t
inner join GROUPS_CLIENTS tt on tt.CLIENT_ID = t.CLIENT_ID
inner join GROUPS g on g.GROUPS_ID=tt.GROUPS_ID
group by g.GROUPS_ID);


вот когда этот процедура врубается 1-я процедура останавливается
сам tmp_GROUPS в первом процедуре не использую.
я не понимаю как создание временной таблицы может воздействовать на другие таблицы?
...
Рейтинг: 0 / 0
11.06.2014, 00:02:24
    #38666989
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MySQL Locks
ENGINE=MyISAM ;

меняй на

ENGINE=innodb ;
...
Рейтинг: 0 / 0
11.06.2014, 00:20:13
    #38666998
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MySQL Locks
Moniak, дело в том, что долгий запрос с select автоматически накладывает блокировку чтения на таблицы CLIENTS. Обновлять их в это время нельзя.
...
Рейтинг: 0 / 0
11.06.2014, 11:12:32
    #38667293
Moniak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MySQL Locks
MasterZivENGINE=MyISAM ;

меняй на

ENGINE=innodb ;

пробовал не помогает (((
...
Рейтинг: 0 / 0
11.06.2014, 11:18:58
    #38667305
Moniak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MySQL Locks
netwindMoniak, дело в том, что долгий запрос с select автоматически накладывает блокировку чтения на таблицы CLIENTS. Обновлять их в это время нельзя.

если я navicat-ом делаю тоже самый запрос

select g.GROUPS_ID as 'GROUPS_ID', count(distinct t.EMAIL) as 'MAIL_COUNT' ,count( distinct t.PHONE) as 'SMS_COUNT'
from CLIENT t
inner join GROUPS_CLIENTS tt on tt.CLIENT_ID = t.CLIENT_ID
inner join GROUPS g on g.GROUPS_ID=tt.GROUPS_ID
group by g.GROUPS_ID;

то вторая процедура не останавливается.
я даже не знаю где капать и как все это осуществит
...
Рейтинг: 0 / 0
11.06.2014, 11:59:44
    #38667366
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MySQL Locks
Moniakдоброй времени суток всем.
прощу помощи )
есть 2 процедуры 1 работает постоянно и меняет некоторые данные в таблице клиентов
2-й только рассчитывает данные

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DROP TEMPORARY TABLE IF EXISTS tmp_GROUPS;
CREATE TEMPORARY TABLE tmp_GROUPS 
(GROUPS_ID int,MAIL_COUNT int,SMS_COUNT int) ENGINE=MyISAM ;

insert into tmp_GROUPS(GROUPS_ID ,MAIL_COUNT ,SMS_COUNT )
(select g.GROUPS_ID as 'GROUPS_ID', count(distinct t.EMAIL) as 'MAIL_COUNT' ,count( distinct t.PHONE) as 'SMS_COUNT'
from CLIENT t
inner join GROUPS_CLIENTS tt on tt.CLIENT_ID = t.CLIENT_ID
inner join GROUPS g on g.GROUPS_ID=tt.GROUPS_ID
group by g.GROUPS_ID);


вот когда этот процедура врубается 1-я процедура останавливается
сам tmp_GROUPS в первом процедуре не использую.
я не понимаю как создание временной таблицы может воздействовать на другие таблицы?

кстати говоря.

inner join GROUPS g on g.GROUPS_ID=tt.GROUPS_ID
это зачем??? если используеться только поле g.GROUPS_ID равное tt.GROUPS_ID ???
...
Рейтинг: 0 / 0
11.06.2014, 12:55:44
    #38667476
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MySQL Locks
MoniaknetwindMoniak, дело в том, что долгий запрос с select автоматически накладывает блокировку чтения на таблицы CLIENTS. Обновлять их в это время нельзя.

если я navicat-ом делаю тоже самый запрос

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

то вторая процедура не останавливается.
я даже не знаю где капать и как все это осуществит
Для начала сделать еще одно подключение и выполнить show full processlist в тот момент когда все висит.
В словарик тоже можно "покапать".
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MySQL Locks / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]