А при использовании транзакций delete запрос должен быстро выполняться?

Labutin

Новичок
А при использовании транзакций delete запрос должен быстро выполняться?

Упрощу пример до минимума:

1. mysql_query(''START TRANSACTION');
2. mysql_query("DELETE FROM table WHERE storeId=123");
3. mysql_query("COMMIT");

Выполняю три запроса подряд. Данных много, индекс есть - вопрос не в этом. Без транзакций DELETE запрос выполняется около минуты.
А с транзакциями, какой из этих трех запросов должен выполняться долго?
Я почему-то думал, что 3-й, а у меня получается, что 2-й.

Подскажите, какой все-таки запрос должен работать в указанном примере долго?

P.S. MySQL 5.0.77
 

Вурдалак

Продвинутый новичок
Вообще да, при выполнении третьего всё и происходит. Может у table тип MyISAM?
 

Labutin

Новичок
таблица точно InnoDB

-~{}~ 15.07.10 21:21:

где-то в инете видел, что типа для транзакций обязательно включать бинарный лог
log-bin
у меня бинарный лог не включен. Это может быть причиной?
 

prolis

Новичок
При выполнении третьего завершаются изменения, помеченные к исполнению во втором. Для ускорения запросов удаления используются другие методы.
 

dadoc

Новичок
Я не знаю как точно реализована версионность в InnoDB, но подозреваю что как только внутри транзакции есть какой либо запрос на изменении данных, приходится создалавать новый snapshot данных которые подлежат изменению. Далее транзакция будет работать уже с этими данными. MySQL не знает, что ваша транзакция не содержит ничего кроме DELETE что бы отложить это "на потом". Поэтому на выполнение запроса 2 (DELETE) необходимо ощутимое время в Вашем случае.
 
Сверху