我想知道如何在node.js应用程序中处理qldb会话。
我应该为整个应用范围创建一个会话,还是应该在每一批交易之前进行一个新会话?
现在,我正在每个事务之前创建一个会话,并且在运行单元测试时遇到一些OCC冲突(为每个测试创建一个新会话)。
答案 0 :(得分:1)
您应根据需要使用尽可能多的会话,以达到所需的吞吐量水平。每个会话可以运行一个事务,并且每个事务都有一定的延迟。因此,例如,如果您的事务花费10毫秒,那么您每秒可以执行100笔事务(1s = 1000ms和1000/10 = 100)。如果需要达到1000 TPS,则需要10个会话。
驱动程序带有会话“池”。因此,每个事务都应从池中请求一个会话。池将根据需要增长/缩小。
每个会话的生存时间不得超过15分钟(有些抖动)。因此,您应该处理使用会话引发异常(无效会话)并重试操作(获取会话,运行事务)的情况。
就OCC而言,我认为这很可能与您使用会话无关。 OCC意味着您读取了事务中的数据,这些数据在您尝试提交时已更改。通常,这意味着您没有设置正确的索引,因此您的读取内容正在扫描表中的所有项目。