与Tarantool缓存一致性

时间:2018-06-04 16:23:10

标签: tarantool

  • 据我所知,Tarantool在存储过程中有ACID事务。我的问题是:它是否也确保内存数据与持久文件系统数据同步?例如,如果我在使用存储过程更改5条记录并将更改写入WAL文件时出错,那么内存高速缓存是否会回滚到所有5条记录的原始值?

  • 此外,在更新交易正在进行中时,其他读者是否会看到“肮脏”。交易开始前存在的未提交记录或记录的一致视图?

由于

1 个答案:

答案 0 :(得分:1)

  1. Tarantool在存储过程中具有特殊的事务控制功能[1]。但它有一些限制:例如:你不能在box.begin()box.end()部分内调用fiber.yield()[2](包括底层调用,即fio,套接字等)。您可以在此处找到有关交易控制的更多信息:https://tarantool.io/en/doc/1.9/book/box/atomic.html?highlight=yield
  2. 而且,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

    1. 仅当用户使用光纤并且不控制自己的代码时才有可能。这意味着只有在用户代码中存在逻辑错误时才有可能。
    2. 欢迎你。