Как предотвратить тайм-аут транзакции?

Я выполняю транзакции чтения-записи, которые занимают больше 10 секунд, и у них истекает время ожидания (с ошибками ABORTED). Есть ли способ указать более длительный тайм-аут?


person Mike Curtiss    schedule 01.06.2017    source источник


Ответы (1)


Невозможно указать тайм-аут для транзакции, но у вас есть несколько вариантов:

  1. Вы можете периодически отправлять executeSql запрос каждые 5-8 секунд, чтобы ваша транзакция оставалась активной. Вы можете выполнить простой запрос, например SELECT 1. Дополнительную информацию о неактивных транзакциях можно найти здесь.
  2. Вы можете использовать транзакцию только для чтения вместо чтения-записи. сделка. У транзакций только для чтения нет тайм-аута, и они прерываются только при удалении базового сеанса. (Сессии можно удалить вручную или автоматически примерно через час простоя.)

Вы должны подумать, действительно ли вам нужна такая длинная транзакция чтения-записи. Транзакции чтения-записи используют блокировки и другие ресурсы, которые могут блокировать выполнение других транзакций. Обычно это анти-шаблон для таких долгоживущих транзакций чтения-записи.

person Mike Curtiss    schedule 01.06.2017