Согласованность кэша с Tarantool - PullRequest
0 голосов
/ 04 июня 2018
  • Я понимаю, что Tarantool выполняет транзакции ACID в хранимой процедуре.Мой вопрос: он также обеспечивает синхронизацию данных в памяти с постоянными данными файловой системы?Например, если я изменю 5 записей с помощью сохраненного процесса и что-то пойдет не так при записи изменений в файл WAL, откатится ли кэш в памяти до исходных значений для ВСЕХ 5 записей?

  • Кроме того, во время выполнения транзакции обновления другие читатели увидят «грязные» незафиксированные записи или непротиворечивое представление записей, существовавших до начала транзакции?

Спасибо

1 Ответ

0 голосов
/ 04 июня 2018
  1. Tarantool имеет специальную функцию для управления транзакциями [1] внутри хранимой процедуры.Но у него есть некоторые ограничения, например: вы не можете вызывать fiber.yield () [2] (который включает в себя базовые вызовы, например, fio, сокеты и т. Д.) Внутри секции box.begin () box.end ().Вы можете узнать больше об управлении транзакциями здесь: https://tarantool.io/en/doc/1.9/book/box/atomic.html?highlight=yield.

А также, tarantool поддерживает fsync [3].

[1] https://tarantool.io/en/doc/1.9/book/box/box_txn_management.html?highlight=commit#lua-function.box.commit

[2] https://tarantool.io/en/doc/1.9/reference/reference_lua/fiber.html?highlight=yield#lua-function.fiber.yield

[3] https://tarantool.io/en/doc/1.9/reference/configuration/index.html?highlight=fsync#confval-wal_mode

Это возможно, только если пользователь использует волокна и не контролирует собственные коды.Это означает, что это возможно, только если в кодах пользователя существует логическая ошибка.

Добро пожаловать.

...