0

我想知道如何在 node.js 应用程序中处理 qldb 会话。

我应该为应用程序的整个范围创建一个会话,还是应该在每批事务之前创建一个新会话?

现在我在每个事务之前创建一个会话,并且在运行单元测试时遇到了一些 OCC 冲突(为每个测试创建一个新会话)。

4

1 回答 1

1

您应该根据需要使用尽可能多的会话来达到所需的吞吐量水平。每个会话可以运行一个事务,每个事务都有一定的延迟。因此,例如,如果您的事务需要 10 毫秒,那么您每秒可以执行 100 次事务(1 秒 = 1000 毫秒,1000/10 = 100)。如果您需要达到 1000 TPS,则需要 10 个会话。

驱动程序带有一个会话“池”。因此,每个事务都应该从池中请求一个会话。池将根据需要增长/缩小。

每个会话的生存时间不超过 15 分钟(存在一些抖动)。因此,您应该处理使用会话引发异常(无效会话)并重试操作(获取会话,运行事务)的情况。

就 OCC 而言,我认为这很可能与您对会话的使用无关。OCC 意味着您读取事务中的数据,这些数据在您尝试提交时已更改。通常这意味着您没有设置正确的索引,因此您的读取正在扫描表中的所有项目。

于 2019-11-26T21:58:41.420 回答