|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Anton Voronin 2:5010/148.16 12 Oct 2001 02:29:43 To : All Subject : MySQL: transactions vs locks -------------------------------------------------------------------------------- Как я выяснил опытным путем, когда в Mysql активна транзакция, то не работают блокировки (LOCK молчаливо проходит, а на UNLOCK сервер падает по SIGSEGV со словами "...you probably hit a bug..."). И наоборот, если хоть одна таблица в базе блокирована, то не работают транзакции (AutoCommit не устанавливается в 0. Значит нужно использовать либо то, либо другое. Hапример, когда запросов на изменение (UPDATE/INSERT/etc...) не больше одного, а остальные - SELECT'ы, то можно обойтись только блокировками, без транзакций, так как целостности базы ничего не угрожает. А если все запросы - на изменение данных, то можно обойтиь без блокировок, только транзакциями (потому как вся последовательность выполняется за одну атомарную операцию и никто другой не сможет внести изменения между запросами этой транзакции). Hо что делать, если и update'ов/insert'ов больше нуля, а select'ов больше одного? Транзакция здесь нужна обязательно, но если не делать блокировок, то: 1. В случае когда сначала делается select, а потом на основе выбранных им данных делаются обновления, существует ли гарантия, что между селектом и апдейтом не внесено изменений другим пользователем в базу таким образом, что данные, на которых основывается дальнайший update, окажутся неактуальными? Ведь несмотря на транзакцию, select все равно делается сразу, а не во время commit'а. 2. В случае когда сначала делается серия обновлений, а потом select, который должен отразить эти изменения, не будет ли он читать данные из исходной таблицы, в которой изменения еще не отражены, поскольку коммита еще не было? Заранее спасибо. Anton --- QDed beta v1.3/FreeBSD * Origin: После сытного обеда можно слезть с велосипеда (2:5010/148.16) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/39363bc60477.html, оценка из 5, голосов 10
|