Skip to content

[48pt]Сложное и неочевидное описание транзакций #1422

Closed
@unhandled-exception

Description

@unhandled-exception

https://www.tarantool.io/ru/doc/2.5/book/box/atomic/

Сегодня три раза прочитал, но так и не стало понятно какая модель изоляции транзакций в Тарантуле. Сначала думаешь, что serialized, но потом оказывается, что нет — если есть вызовы, прерывающие файбер (винил, сеть, работа с файлами и т.п.), то уже read commited. И то я до конца не уверен, что правильно понял.

При этом на самой страничке привычные термины из «теории» и описания других БД нет. Возможно стоит переосмыслить страничку. Про кооперативную многозадачность написано более-менее ясно, если понимаешь как устроены всякие async/await в других языках, но про транзакции все равно странно.

На этой же страничке есть такое:

Если задача интерактивная – отправка запроса на сервер и получение ответа – то она включает в себя сетевой ввод-вывод, поэтому наблюдается неявная передача управления, даже если отправляемый на сервер запрос не представляет собой запрос с неявной передачей управления. Таким образом, последовательность:

select
select
select

приводит к блокировке (в memtx’е), если находится внутри функции или Lua-программы, которая выполняется на экземпляре сервера. Однако она вызывает передачу управления (и в memtx’е, и в vinyl’е), если выполняется как серия передач от клиента, включая клиентов, работающих по telnet, по одному из коннекторов или модулей MySQL и PostgreSQL или в интерактивном режиме при использовании Tarantool’а как клиента.

Такое впечатление, что в примере не хватает еще каких-то вызовов api, иначе непонятно почему три последовательных селекта вызывают локи.

Metadata

Metadata

Assignees

Labels

rewrite[nature] Revise existing text for structure/phrasing/termsserver[area] Task relates to Tarantool's server (core) functionalityuser_guide[location] Tarantool manual, User's Guide part

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions