MySQL версия 5.5.28Убивает ли процесс InnoDB результат ROLLBACK запроса?
Я случайно запросил UPDATE
запрос без предложения WHERE.
Затем я убил процесс в MySQL, используя kill 202085
.
Это привело к автоматическому откату? Или мне нужно беспокоиться о частично выполненном запросе?
EDIT: Мой запрос был «ОТПРАВКА ДАННЫХ» согласно SHOW PROCESSLIST
.
EDIT: Вот запрос без предложения WHERE
.
UPDATE products t1,
`raw_table` t2
SET t1.`model` = t2.`model`
, t1.`sku` = CONCAT('ABC-',t2.`model`)
Без WHERE
статьи, это тайна, как к тому, что UPDATE
будет делать, так как я не уточнил, никакого отношения.
После добавления предложения WHERE
мой запрос выполняется мгновенно и обновлен примерно на 250 строк, как ожидалось.
WHERE t1.`model` = t2.`old_model`
AND t1.`vendor_id` = 53
Вы пытались проверить базу данных, чтобы узнать, обновлены ли строки? Если вы знаете, сколько экземпляров нового значения должно было быть в базе данных до обновления, вы можете запустить что-то вроде 'select COUNT (*) с, где = 'my_value';'. Если у вас больше экземпляров такого значения, чем у вас должно быть, вы можете предположить, что ваши изменения не откатны. –
При сбое при повторном запуске будет выполнен откат. См. Https://dev.mysql.com/doc/refman/5.7/en/innodb-recovery.html. Откат назад займет до 4 раз дольше, чем ваш acutal-запрос. Если транзакция была совершена до того, как вы убили mysqld, она не будет выполнять откат. – user3606329
Pro-tip: при работе над производственными данными не вводите ';', пока вы не удвоите или не проверите тройной запрос. Также, если у вас нет хорошей стратегии резервного копирования, пришло время ее реализовать. – tadman