DynamoDB TransactionConflictException
TL;DR — Transaksi lain sudah beroperasi pada item yang sama dengan permintaan Anda, jadi DynamoDB menolak transaksi Anda untuk menjaga isolasi. Ini hanya perselisihan sementara, bukan bug pada data Anda — coba lagi dengan backoff eksponensial, jaga agar transaksi tetap kecil, dan kurangi penulisan bersamaan ke item populer yang sama.
Apa artinya
TransactionConflictException: Transaction is ongoing for the itemPerhatikan perbedaan dari TransactionCanceledException: ketika permintaan yang kalah itu sendiri adalah TransactWriteItems atau TransactGetItems, DynamoDB akan membatalkan seluruh transaksi tersebut — Anda mendapatkan cancellation yang CancellationReasonsnya membawa TransactionConflict sebagai kode alasan per item, bukan pengecualian ini.
Mengapa itu terjadi
- Penulisan serentak ke item yang sama —
PutItem/UpdateItembiasa tumpang tindih denganTransactWriteItemsdalam penerbangan yang menyentuh item tersebut. - Dua transaksi berbagi item — dua permintaan
TransactWriteItemsmenyertakan kunci yang sama pada waktu yang sama; satu menang, yang lain dibatalkan dengan kode alasanTransactionConflict(muncul sebagaiTransactionCanceledException). - Item populer dalam pembaruan berat secara bersamaan — mis. penghitung bersama atau satu baris agregat setiap permintaan diperbarui.
- Transaksi panjang atau besar menyimpan item cukup lama untuk tumpang tindih dengan penulis lain.
- A retry storm — percobaan ulang tanpa backoff menumpuk lebih banyak percobaan secara bersamaan ke item yang diperebutkan sama.
Bagaimana cara memperbaikinya
- Coba lagi dengan backoff eksponensial + jitter. Ini adalah perbaikan utama — konflik bersifat sementara dan hilang ketika transaksi lainnya diselesaikan. Pertahankan jitter agar percobaan ulang tidak disinkronkan ulang menjadi tabrakan lainnya.
- Jaga transaksi tetap kecil dan singkat — lebih sedikit item per
TransactWriteItemsberarti penangguhan lebih pendek dan lebih sedikit tumpang tindih. - Kurangi pertentangan pada item populer — pecahkan penghitung panas ke beberapa item dan agregat, atau gunakan penghitung atom dengan
UpdateItem(ADD) biasa alih-alih transaksi saat Anda tidak memerlukan semantik semua atau tidak sama sekali. - Jangan mencampur transaksi dan penulisan biasa pada item yang sama secara bersamaan jika Anda dapat menghindarinya — rutekan keduanya melalui jalur yang sama.
- Pantau metrik
TransactionConflictCloudWatch untuk melihat apakah pertentangan meningkat dan di mana.
Periksa di DynoTable
Jika penulis bersamaan adalah Anda, pengeditan manual batch melalui staging (⌘S) — DynoTable mengkomitnya sebagai satu penulisan yang ditinjau, bukan aliran pembaruan satu item yang tumpang tindih. Buka item yang diperebutkan dengan ⌘K dan periksa status aktif sebelum mencoba lagi.
Ukur lalu lintas transaksional dengan kalkulator harga. Ganti profil dengan ⌘P; Uji Koneksi pada Pengaturan → Profil. Lihat Menghubungkan ke AWS dan Instal.
Sumber
- Transaksi Amazon DynamoDB: Cara kerjanya (diverifikasi 13-07-2026)
- PutItem — Referensi Amazon DynamoDB API (diverifikasi 13-07-2026)
FAQ
Bagaimana cara memperbaiki TransactionConflictException di DynamoDB? Coba lagi permintaan dengan backoff dan jitter eksponensial — konfliknya adalah perselisihan sementara dengan transaksi dalam penerbangan lainnya pada item yang sama. Jaga juga agar transaksi tetap kecil, pecahkan item-item panas, dan hindari menjalankan transaksi dan penulisan biasa terhadap item yang sama secara bersamaan.
Apakah TransactionConflictException sama dengan TransactionCanceledException? Tidak. TransactionConflictException berarti transaksi lain sedang berjalan pada item tersebut. TransactionCanceledException berarti seluruh transaksi dibatalkan; Alasan Pembatalannya menjelaskan alasannya, dan konflik transaksi dapat menjadi salah satu alasannya.
Kesalahan terkait
- TransactionCanceledException — seluruh transaksi dibatalkan (kondisi, kapasitas, atau konflik).
- ConditionalCheckFailedException — kondisi penulisan tunggal gagal.
- Contoh kode: TransactWriteItems di Node.js — transaksi dengan retry/backoff untuk diadaptasi.
- Pelajari: Transaksi DynamoDB · Penghitung atom
Referensi
Transaksi Amazon DynamoDB: Cara kerjanya — Panduan Pengembang Amazon DynamoDB
metrik dan dimensi DynamoDB — Panduan Pengembang Amazon DynamoDB
Terakhir diverifikasi 2026-07-13 berdasarkan dokumentasi resmi AWS yang ditautkan di atas.