Saya memiliki permintaan batch yang saya jalankan setiap hari di database saya. Namun, tampaknya macet dalam keadaan siaga, dan saya mengalami banyak kesulitan men-debug apa yang terjadi.
Kueri adalah agregasi pada tabel yang secara bersamaan dimasukkan, yang saya duga terkait dengan masalah tersebut. (Agregasi adalah pada data hari-hari sebelumnya, sehingga penyisipan tidak akan memengaruhi hasil.)
Petunjuk
Saya menjalankan ini di dalam skrip python menggunakan sqlalchemy. Namun, saya telah mengatur tingkat transaksi ke autocommit, jadi saya tidak berpikir ada sesuatu yang dibungkus dalam suatu transaksi. Di sisi lain, saya tidak melihat permintaan hang ketika saya menjalankannya secara manual di terminal sql.
Dengan permintaan
pg_stat_activity
, permintaan awalnya masuk ke dalam database sebagaistate='active'
. Setelah 15 detik, status berubah menjadi 'idle' dan selain itu,xact_start
diatur keNULL
. Bendera yang menunggu tidak pernah disetel ke true.Sebelum saya menemukan autocommit tingkat transaksi untuk sqlalchemy, ia lebih baik menggantung dalam keadaan
'idle in transaction'
daripada'idle'
. Dan itu mungkin sedikit lebih jarang hang sejak membuat perubahan itu?
Saya merasa tidak siap menggali lebih dalam dari ini. Setiap umpan balik, bahkan menjelaskan lebih lanjut tentang negara bagian yang berbeda dan internal postgres yang relevan tanpa memberikan jawaban yang pasti, akan sangat dihargai.
COMMIT
dikeluarkan untuk mengakhiri transaksi. Sepertinya masalah Anda mungkin berada di tempat lain selain db ..