防止事务超时的方法?

Way to prevent transaction timeout?

我的 运行 读写事务耗时超过 10 秒,并且它们正在超时(因 ABORTED 错误而失败)。有没有办法指定更长的超时时间?

无法指定事务的超时时间,但您有几个选择:

  1. 您可以每隔 5-8 秒定期发出一个 executeSql 请求 让您的交易保持活力。你可以做一个简单的查询,比如 SELECT 1。有关闲置交易的更多信息 here.
  2. 您可以使用 read-only transaction 而不是读写事务。只读事务没有超时,只有在删除底层会话时它们才会中止。 (会话可以手动删除,也可以在大约一个小时的空闲时间后自动删除。)

你应该考虑一下你是否真的需要这么长的读写事务。读写事务使用锁和其他可以阻止其他事务进行的资源。这通常是具有如此长寿命的读写事务的反模式。