The maximum number of statements allowed has been exceeded

提问参考模版:

  • nebula 版本:2.0GA
  • 部署方式(分布式 / 单机 / Docker / DBaaS):分布式
  • 是否为线上版本:N

想知道批量执行的最大 执行条数是多少

ho.op_time" set column.dropFlag = true;UPSERT VERTEX "bdp.tmp_dm_oewm.deduce_waybill_consigned_outwh_80_cho.op_zone_code" set column.dropFlag = true;UPSERT VERTEX "bdp.tmp_dm_oewm.deduce_waybill_consigned_outwh_80_cho.optimal_deliver_batch_code" set column.dropFlag = true;UPSERT VERTEX "bdp.tmp_dm_oewm.deduce_waybill_consigned_outwh_80_cho.optimal_dest_zone_code" set column.dropFlag = true;UPSERT VERTEX "bdp.tmp_dm_oewm.deduce_waybill_consigned_outwh_80_cho.optimal_path" set column.dropFlag = true;UPSERT VERTEX "bdp.tmp_dm_oewm.deduce_waybill_consigned_outwh_80_cho.optimal_product_type" set column.dropFlag = true;UPSERT VERTEX "bdp.tmp_dm_oewm.deduce_waybill_consigned_outwh_80_cho.parent_waybill_no" set column.dropFlag = true;UPSERT VERTEX "bdp.tmp_dm_oewm.deduce_waybill_consigned_outwh_80_cho.signin_time" set column.dropFlag = true;
[ERROR (-12)]: SemanticError: The maximum number of statements allowed has been exceeded

Wed, 21 Apr 2021 11:30:11 CST

默认是 512

1 个赞

你是在做批量更新么?

使用java客户端做批量插入,更新
发现 INSERT VERTEX table (taskId, dropFlag) VALUES “aaa”:(“101451”, false), “bbb”:(“101452”, false);耗时比 INSERT VERTEX table (taskId, dropFlag) VALUES “aaa”:(“101451”, false);INSERT VERTEX table (taskId, dropFlag) VALUES"bbb":(“101452”, false);小
并且第二种方式有 语句限制

我的场景里面有很多的upsert,想请问下这种 怎么做批量 更有效率呢

你好,我们现在还不支持批量更新,所以更新的话,你只能用第二种方式了。

能问一下你具体需求,是批量更新某个属性改成一样的属性,比如批量改成 true,还是要更新的数据里面,有的是 true,有的是 false,我们可以记一下,看后面会不会排进来。

cc @steam

批量 将某一些 顶点的 某个属性改为 true

还有一种更新场景是, 比如存在顶点 A、B、C, 存在有边关系 A->B, B->C
此时业务需要 引入新的顶点D, 替换顶点B, 然后会遍历B上面的所有边关系替换为D,替换后的边关系为A->D, D->C,(删除边关系 A->B, B->C ),顶点为 A、C、D(删除顶点B)

这样的 B,是一批量有很多,还是就一个就好。

A,B1,B2,B3,C,把 B1,B2,B3 的所有边关系替换为 D,是这样么?

就一个

批量更新的需求已经评审通过,后续可以通过 pipe 来更新,类似如下所示:

GO ... YIELD like._src AS id |
UPDATE VERTEX $-.id
SET player.age = 30