Menurut komentar pada pertanyaan ini saya bertanya tentang koneksi idle di PostgreSQL 9.2 , beberapa transaksi yang tidak dikomit (mungkin terkait dengan beberapa koneksi idle) mungkin menyebabkan beberapa masalah kinerja.
Apa cara yang baik untuk menentukan apakah ada transaksi yang tidak dikomit (poin bonus jika ada cara untuk mengetahui apakah koneksi mereka sedang menganggur atau tidak)?
Terima kasih banyak!
postgresql
database-design
performance
Juan Carlos Coto
sumber
sumber
pgtop
. Anda juga dapat mencari baris yang menunjukkan "idle in transaction" di output darips aux
.pgtop
terlihat menarik; apakah ada yang setara untuk Windows?Jawaban:
Jika Anda ingin melihat berapa banyak koneksi siaga yang Anda miliki yang memiliki transaksi terbuka, Anda dapat menggunakan:
Ini akan memberikan daftar koneksi terbuka yang dalam keadaan siaga, yang juga memiliki transaksi terbuka.
Karena itu, saya tidak dapat membuat kembali koneksi terbuka dalam keadaan siaga yang memiliki transaksi terbuka. Mungkin orang lain dapat memberikan detail tentang cara melakukan itu.
sumber
state
kolom tersebut hanya ada di 9.2. Dan bagi saya sepertinya negara yang tepat adalah 'idle in transaction'.state = 'idle'
tidak tidak menunjukkan transaksi terbuka.I cannot recreate an open connection in the idle state that has an open transaction.
Buka dua koneksi ke database, dan ketik "mulai;" jadi satu. Di lain menjalankan kueri di atas, dan Anda akan memilikiidle in transaction
.