首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为arangodb-php中的流事务增加“`maxTransactionSize`”

如何为arangodb-php中的流事务增加“`maxTransactionSize`”
EN

Stack Overflow用户
提问于 2020-03-03 17:07:46
回答 1查看 191关注 0票数 1

文档要求以事务属性的形式传递(对/begin的调用):

maxTransactionSize:事务大小限制(以字节为单位)。仅由RocksDB存储引擎授予。

尽管php-client忽略了该属性,但我还是设法做到了这一点,在将事务实例交给处理程序之前先手动设置它:

代码语言:javascript
复制
 $trx->set('maxTransactionSize', $config['maxTransactionSize'])

这是事务属性( var_dump )的$trx->attributes,直接在调用begin之前。

代码语言:javascript
复制
includes/libs/arangodb/lib/ArangoDBClient/StreamingTransactionHandler.php:50:
array(2) {
  'collections' =>
    array(3) {
      'read' =>
       array(0) {
      }
      'write' =>
       array(0) {
      }
      'exclusive' =>
       array(1) {
         [0] =>
          string(7) "actions"
       }
    }
  'maxTransactionSize' =>
  int(536870912)
}

但交易失败的原因是:

错误: AQL:中止事务,因为达到了134217728字节的最大事务大小限制(执行时)

我错过了什么/做错了什么?

我在3.5.4和3.6.1上进行了测试,结果也是一样的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-04 10:01:46

结果证明,阅读整个文档是明智的。128 is是流事务大小的硬上限。

对协调程序强制执行流事务的最大生存期和事务大小,以确保事务不能阻止集群正常运行:

在操作之间的最大空闲超时时间为10秒,每个DB最大事务大小为128 MB,这些限制也适用于单个服务器上的流事务。

这意味着对于需要更多内存的查询,必须使用js事务。arangodb-php客户端提供了Transaction.php来将这些包在客户端,不需要编写/扩展foxx应用程序--至少在js-事务(https://www.arangodb.com/docs/devel/http/transaction-js-transaction.html)文档中没有提到限制。

编辑:我以js事务的形式重新实现了我的案例,它不受阻碍地完成了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60512297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档