Origodb - 为什么 "Do expensive preparation or validation in Command.Prepare() because it will not block readers"
Origodb - Why "Do expensive preparation or validation in Command.Prepare() because it will not block readers"
摘自 here 的文字。
请解释一下读者与交易有什么关系。
Inmutable + 1 updater + in-memory 应该让事情变得如此简单。
我假设 Origodb 是使用不可变数据结构构建的,即读者将继续使用交易前的数据工作。并且,当读者完成后,读者对数据库的引用将被删除,GC 将清除旧数据。
我什至不明白为什么 Prepare 部分对 Origodb 事务至关重要,因为只有一个更新程序,所以 Prepare 或 Execute 期间的任何异常只会中止事务,而 Origodb 会继续使用之前的数据库失败的事务已启动。
OrigoDB 支持不可变数据结构和无锁 MVCC 事务,但它不是默认设置。默认模式是共享可变状态,使用全局 ReaderWriterLockSlim
进行同步。 Prepare()
方法在锁处于升级模式时调用。
摘自 here 的文字。
请解释一下读者与交易有什么关系。
Inmutable + 1 updater + in-memory 应该让事情变得如此简单。
我假设 Origodb 是使用不可变数据结构构建的,即读者将继续使用交易前的数据工作。并且,当读者完成后,读者对数据库的引用将被删除,GC 将清除旧数据。
我什至不明白为什么 Prepare 部分对 Origodb 事务至关重要,因为只有一个更新程序,所以 Prepare 或 Execute 期间的任何异常只会中止事务,而 Origodb 会继续使用之前的数据库失败的事务已启动。
OrigoDB 支持不可变数据结构和无锁 MVCC 事务,但它不是默认设置。默认模式是共享可变状态,使用全局 ReaderWriterLockSlim
进行同步。 Prepare()
方法在锁处于升级模式时调用。