Neo4j Browser 4.2.1沙箱环境如何调大事务超时加载五万行CSV?
Neo4j Sandbox Browser 4.2.1版本加载CSV事务超时解决方法
针对你在无配置文件访问权限的Sandbox环境下,加载5万行CSV时触发Neo.ClientError.Transaction.TransactionTimedOut报错的场景,可通过以下无需修改服务端配置的操作解决:
- 调整Neo4j Browser客户端的事务超时设置,避免前端提前中断连接
在执行LOAD CSV语句前,先在Browser输入框运行内置配置命令,将客户端侧的事务超时阈值设置为无限制:
:config transactionTimeout=0
注意:该操作仅调整Browser本身的等待时长,不会触碰服务端的超时限制——Sandbox平台的服务端事务超时参数为平台侧固定配置,普通用户无权限修改,即便前端设置了更长的等待时间,服务端仍会在固定超时时间点强制终止事务,因此必须配合后续的事务拆分操作使用。
- 拆分大事务为多个小批次,从根本上降低单事务执行时长,适配Sandbox固定的服务端超时阈值
将原本单事务加载5万行的操作,拆分为多个独立的小事务执行,让每个小事务的耗时远低于服务端超时阈值: - 优先使用Sandbox默认预装的APOC工具实现自动分批,避免手动循环操作:
CALL apoc.periodic.iterate( "LOAD CSV WITH HEADERS FROM '你的CSV文件可访问地址' AS row RETURN row", "CREATE (:对应节点标签 {属性: row.匹配的CSV列值})", {batchSize:1000, parallel:false} )
上述代码会自动每累计1000行数据就提交一次事务,单事务执行耗时通常在数秒内,完全不会触发超时判定。
- 如果不想依赖APOC组件,可手动分页循环加载,每次单事务仅处理固定行数:
第一次执行加载逻辑时,设置偏移量为0,单次加载1000行:
LOAD CSV WITH HEADERS FROM '你的CSV文件可访问地址' AS row WITH row SKIP 0 LIMIT 1000 CREATE (:对应节点标签 {属性: row.匹配的CSV列值})
后续依次将SKIP值替换为1000、2000、3000... 循环执行,分50次即可完成全量5万行数据的加载。
注意:不要尝试寻找本地配置文件修改超时参数,Sandbox的配置目录为隔离的临时环境,普通用户无写入权限,所有调整服务端参数的操作均会失败。
内容的提问来源于stack exchange,提问作者Dhruv Chawla
相关产品推荐
相关产品推荐

