SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 24.04.2012 20:24:33

Lioha
Участник
Зарегистрирован: 24.11.2010
Сообщений: 22

как лочаться таблицы при union и/или union all

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

Если я выполняю такой запрос(оба подзапроса из одной и той же таблицы):

select 1,a,b,c from table1 where ...
union (union all)
select 2,sum(a),sum(b),sum(c) from table1 where ...

Вопрос - MySql залочит таблицу table1 на чтение, выполнит оба подзапроса и только потом разлочит ее. Или же MySql сначала залочит таблицу table1 на чтение, выполнит первый подзапрос, затем разлочит таблицу table1, потом снова ее залочит для второго подзапроса и после разлочит? Т.е. между первым и вторым подзапросами смогут ли другие клиенты делать изменения в таблице table1?

или выполняю такой запрос(подзапросы из разных таблиц):

select 1,a,b,c from table1 where ...
union (union all)
select 2,a,b,c from table2 where ...

Вопрос - MySql сразу залочит обе таблицы table1 и table2 на чтение, выполнит оба подзапроса и только потом разлочит таблицы. Или же MySql сначала залочит таблицу table1 на чтение, выполнит первый подзапрос, затем разлочит таблицу table1, потом залочит table2 на чтение для второго подзапроса и после разлочит table2?

Спасибо Большое!

Неактивен

 

#2 24.04.2012 21:05:29

Lioha
Участник
Зарегистрирован: 24.11.2010
Сообщений: 22

Re: как лочаться таблицы при union и/или union all

Забыл добавить про тип таблиц - MyIsam

Неактивен

 

#3 24.04.2012 23:00:19

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: как лочаться таблицы при union и/или union all

По идее, MySQL сразу посмотрит, какие нужны таблицы, и их залочит (т.е. одновременно, все вместе, независимо от следования в запросе).

Неактивен

 

Board footer

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