|
|
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
|