Я выполняю транзакции чтения-записи, которые занимают больше 10 секунд, и у них истекает время ожидания (с ошибками ABORTED
). Есть ли способ указать более длительный тайм-аут?
Как предотвратить тайм-аут транзакции?
Ответы (1)
Невозможно указать тайм-аут для транзакции, но у вас есть несколько вариантов:
- Вы можете периодически отправлять
executeSql
запрос каждые 5-8 секунд, чтобы ваша транзакция оставалась активной. Вы можете выполнить простой запрос, напримерSELECT 1
. Дополнительную информацию о неактивных транзакциях можно найти здесь. - Вы можете использовать транзакцию только для чтения вместо чтения-записи. сделка. У транзакций только для чтения нет тайм-аута, и они прерываются только при удалении базового сеанса. (Сессии можно удалить вручную или автоматически примерно через час простоя.)
Вы должны подумать, действительно ли вам нужна такая длинная транзакция чтения-записи. Транзакции чтения-записи используют блокировки и другие ресурсы, которые могут блокировать выполнение других транзакций. Обычно это анти-шаблон для таких долгоживущих транзакций чтения-записи.
person
Mike Curtiss
schedule
01.06.2017