如何在arangodb php中增加流式事务的“maxTransactionSize”
文档中说作为事务属性传递(调用如何在arangodb php中增加流式事务的“maxTransactionSize”,php,arangodb,arangodb-php,Php,Arangodb,Arangodb Php,文档中说作为事务属性传递(调用/begin): maxTransactionSize:以字节为单位的事务大小限制。仅由RocksDB存储引擎授予 尽管php-客户端在将事务实例移交给处理程序之前手动设置该属性,但我还是设法做到了这一点: $trx->set('maxTransactionSize', $config['maxTransactionSize']) 这是直接在调用begin之前的事务属性($trx->attributes)的var\u dump: includes/libs
/begin
):
maxTransactionSize:以字节为单位的事务大小限制。仅由RocksDB存储引擎授予
尽管php
-客户端在将事务实例移交给处理程序之前手动设置该属性,但我还是设法做到了这一点:
$trx->set('maxTransactionSize', $config['maxTransactionSize'])
这是直接在调用begin
之前的事务属性($trx->attributes
)的var\u dump
:
includes/libs/arangodb/lib/ArangoDBClient/StreamingTransactionHandler.php:50:
阵列(2){
“收藏”=>
阵列(3){
“读取”=>
数组(0){
}
“写入”=>
数组(0){
}
“独家”=>
阵列(1){
[0] =>
字符串(7)“操作”
}
}
“maxTransactionSize”=>
内部(536870912)
}
但交易失败的原因是:
错误:AQL:正在中止事务,因为(执行时)已达到134217728字节的最大事务大小限制
我错过了什么/做错了什么
我在3.5.4和3.6.1上对此进行了测试,得到了相同的结果。结果表明,阅读整个文档是明智的。128MB是流式事务大小的硬上限 在协调器上强制流事务的最大生存期和事务大小,以确保事务不会阻止群集正常运行: 两次操作之间的最大空闲超时时间为10秒 每个数据库服务器的最大事务大小为128 MB 这些限制也适用于单个服务器上的流事务 这意味着您必须使用js事务处理需要更多内存的查询。arangodb php客户端提供了
Transaction.php
来在客户端包装这些应用程序,不需要编写/扩展foxx应用程序——至少js transactions()的文档中没有提到任何限制
编辑:我将我的案例重新实现为js事务,它不受阻碍地完成