sql >> Databáze >  >> RDS >> PostgreSQL

Jak zvládnu otevření/zavření připojení Db v aplikaci Go?

Otevření připojení db pokaždé, když je potřeba, je plýtváním prostředky a je to pomalé.

Místo toho byste měli vytvořit sql.DB jednou, když se vaše aplikace spustí (nebo na první vyžádání), a buď ji předejte tam, kde je potřeba (např. jako parametr funkce nebo prostřednictvím nějakého kontextu), nebo z ní jednoduše udělejte globální proměnnou, aby k ní měl přístup každý. Je bezpečné volat z více goroutin.

Citace z dokumentu sql.Open() :

Vrácená databáze je bezpečná pro souběžné použití více rutinními programy a udržuje svůj vlastní fond nečinných připojení. Funkce Open by tedy měla být volána pouze jednou. Jen zřídka je nutné zavřít DB.

Můžete použít balíček init() funkce pro jeho inicializaci:

var db *sql.DB

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

Jedna věc, kterou je třeba poznamenat, je, že sql.Open() nemusí vytvořit skutečné připojení k vaší DB, může jen ověřit její argumenty. Chcete-li otestovat, zda se skutečně můžete připojit k db, použijte DB.Ping() , např.:

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. Poslední slovo ve větě:V SQL (možné regulární výrazy?)

  2. Jak opravit „Neplatný název objektu ‚OPENJSON‘.“ v SQL Server

  3. Je zaručeno zachování objednávky v dílčím dotazu?

  4. 11 způsobů, jak najít duplicitní řádky, které mají primární klíč v Oracle