PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Klien Postgres terkunci saat membuat tabel baru

Jika memulai kembali postgres adalah sebuah opsi, maka kemungkinan besar itu akan menyelesaikan masalah dan akan menyelamatkan Anda dari menghabiskan waktu membaca sisa jawaban ini :-)

Periksa pg_stat_activity lihat, mungkin ada beberapa transaksi lain yang memblokir perubahan skema.

select * from pg_stat_activity 
where 
wait_event_type is NULL and xact_start is not NULL order by xact_start;

(pg_stat_activity diubah sedikit di setiap rilis pg utama, coba ini untuk versi yang lebih lama):

select * from pg_stat_activity 
where 
not waiting and xact_start is not NULL order by xact_start;

Baris pertama yang muncul mungkin yang menyebabkan masalah. Ini sering kali merupakan "menganggur dalam transaksi" - ini mungkin menahan kunci, dan jika ini adalah transaksi lama, itu mungkin juga mematikan kinerja. Mungkin programmer lupa untuk memastikan mengakhiri transaksi dengan "commit" atau "rollback", atau mungkin beberapa sesi db macet karena masalah jaringan.

Untuk mengakhiri transaksi dengan pid 1234, gunakan select pg_cancel_backend(1234); , jika gagal, select pg_terminate_backend(1234) . Dengan akses shell, perintah yang setara adalah kill -INT 1234 dan kill 1234 . (ingat, kill -9 1234 adalah ide yang sangat buruk).

Ada juga tampilan pg_locks yang mungkin memberikan beberapa wawasan, meskipun mungkin tidak mudah untuk mendapatkan info berguna darinya. Jika granted benar, kunci ditahan, ketika granted salah itu berarti kueri sedang menunggu kunci. Berikut adalah beberapa petunjuk lagi di sini tentang cara mengekstrak info berguna dari pg_locks:http://wiki.postgresql. org/wiki/Lock_Monitoring

Jika semuanya gagal, maka mungkin sudah waktunya untuk mencari solusi sederhana, restart server database itu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dorong database SQLite ke Heroku dengan ketukan?

  2. Bagaimana cara menghubungkan C# dengan Postgres?

  3. Bagaimana cara menambahkan nilai parameter ke kueri sql pgadmin?

  4. Nama kolom SQL dan membandingkannya dengan catatan baris di tabel lain di PostgreSQL

  5. Postgres :dapatkan jumlah baris min dan maks di banyak ke banyak tabel relasi