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

Bagaimana cara menangani membuka/menutup koneksi Db di aplikasi Go?

Membuka koneksi db setiap kali dibutuhkan adalah pemborosan sumber daya dan lambat.

Sebagai gantinya, Anda harus membuat sql.DB sekali, ketika aplikasi Anda dimulai (atau pada permintaan pertama), dan meneruskannya di tempat yang dibutuhkan (misalnya sebagai parameter fungsi atau melalui beberapa konteks), atau cukup menjadikannya sebagai variabel global sehingga semua orang dapat mengaksesnya. Aman untuk menelepon dari beberapa goroutine.

Mengutip dari dokumen sql.Open() :

DB yang dikembalikan aman untuk digunakan secara bersamaan oleh beberapa goroutine dan memelihara kumpulan koneksi idle-nya sendiri. Dengan demikian, fungsi Open harus dipanggil sekali saja. Jarang diperlukan untuk menutup DB.

Anda dapat menggunakan paket init() berfungsi untuk menginisialisasinya:

var db *sql.DB

func init() {
    var err error
    db, err = sql.Open("yourdriver", "yourDs")
    if err != nil {
        log.Fatal("Invalid DB config:", err)
    }
}

Satu hal yang perlu diperhatikan di sini adalah sql.Open() mungkin tidak membuat koneksi aktual ke DB Anda, mungkin hanya memvalidasi argumennya. Untuk menguji apakah Anda benar-benar dapat terhubung ke db, gunakan DB.Ping() , misalnya:

func init() {
    var err error
    db, err = sql.Open("yourdriver", "yourDs")
    if err != nil {
        log.Fatal("Invalid DB config:", err)
    }
    if err = db.Ping(); err != nil {
        log.Fatal("DB unreachable:", err)
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pemetaan hibernasi antara Enum PostgreSQL dan Java enum

  2. Hapus beberapa array secara paralel

  3. Bagaimana cara meneruskan array tipe khusus ke fungsi Postgres

  4. Bagaimana Anda mengubah pengkodean karakter dari database postgres?

  5. Jalankan kueri PostgreSQL dari baris perintah