|
|
|
Lock tables и вложенные транзакции
|
|||
|---|---|---|---|
|
#18+
Прошу помощи клуба и уважаемых магистров. MySQL, таблицы - BDB, Perl. Делаю вложенные транзакции: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Функция TransBegin увеличивает счетчик вложенности транзакций, TransEnd - уменьшает и если он достигает нуля - делает commin. А при необходимости - делает rollback. Функция update2 аналогична update1 и также содержит TransBegin и TransEnd. Всё работает, всё отлично и красиво. Вспоминаю про необходимость блокировки таблиц. И тут выясняется пренеприятнейшая вещь. В общем случае, во внешней транзакции я не обязан знать, какие именно таблицы вглуби мне необходимо блокировать. Соответственно хочется блокировать их по мере необходимости. Т.е: В функции update1 я знаю, что мне понадобится заблокировать table1 и table2. А в update2 я знаю, что необходимо блокировать table3 и table4. При этом в update1 про table3 и table4 мне ничего не известно. Поэтому первое, что мне пришло в голову сделать - это передавать список блокируемых таблиц в TransBegin. А в этой функции каждый раз вызывать lock tables. Т.е. в update1 вызывается TransBegin, которая блокирует table1 и table2. В update2 к ним добавляются table3 и table4 и вызывается lock tables на все четыре таблицы. Как бы взамен предыдущего, который был только на две таблицы. И вот тут я радостно выясняю, что, оказывается, lock tables насильно вызывает commit для транзакции. Соответственно вся стройная система летит к чертям... Есть ли мысли, как это дело можно обойти? -- Георгий (Юра) Киселев http://www.helpix.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 11:17 |
|
||
|
Lock tables и вложенные транзакции
|
|||
|---|---|---|---|
|
#18+
А зачем блокировать? UPDATE сам заблокирует что ему надо. У Вас ведь InnoDB? Кстати мы тоже сочиняем вложенные транзакции Жизнь коротка - потерпи немного :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 14:37 |
|
||
|
Lock tables и вложенные транзакции
|
|||
|---|---|---|---|
|
#18+
BDB у него таблицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 14:39 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=32603985&tid=1854988]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
121ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 395ms |

| 0 / 0 |
