Повторная транзакция со вставками из-за одновременного выбора - PullRequest
0 голосов
/ 09 апреля 2020

У меня проблема с транзакциями в cockroachDB.

Периодически таблица перестраивается с использованием внешних данных. Мой подход состоит в том, чтобы удалить таблицу и заново заполнить таблицу с нуля в рамках транзакции.

Я заметил, что если в той же таблице выдается оператор SELECT, когда транзакция продолжается, я получаю TransactionRetryError. После некоторого исследования я понял, что должен использовать cockcroach-db , чтобы транзакция повторялась автоматически.

В большинстве случаев это прекрасно работает, но когда чтение продолжается, cockroachDB в конечном итоге сдается TransactionAbortedError, в частности ABORT_REASON_PUSHER_ABORTED.

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

...