Maison > développement back-end > Golang > Comment puis-je réutiliser une seule connexion à la base de données Postgres dans Go pour des insertions de lignes efficaces ?

Comment puis-je réutiliser une seule connexion à la base de données Postgres dans Go pour des insertions de lignes efficaces ?

Susan Sarandon
Libérer: 2025-01-02 21:42:44
original
671 Les gens l'ont consulté

How Can I Reuse a Single Postgres DB Connection in Go for Efficient Row Inserts?

Réutilisation d'une seule connexion à la base de données Postgres dans Go pour les insertions de lignes

Dans le domaine des opérations de base de données, l'une des tâches courantes consiste à insérer des lignes dans une table. Pour des performances optimales de la base de données, il est essentiel d'établir une connexion unique et de la réutiliser pour toutes les opérations d'insertion. Cette approche évite la surcharge liée à l'ouverture de nombreuses connexions et garantit des interactions de base de données efficaces.

Problème : ouverture excessive de connexions à la base de données

Lors de la tentative d'insertion de plusieurs lignes dans une table Postgres à l'aide Allez, il est crucial d’éviter d’ouvrir une nouvelle connexion à chaque opération d’insertion. Si votre code ressemble à ce qui suit :

db, err := sql.Open("postgres", "connectionURL")
if err != nil {
    log.Fatal(err)
}

for i := 0; i < 10; i++ {
    // Insert row
    _, err := db.Exec("INSERT INTO table VALUES (...)")
    if err != nil {
        log.Fatal(err)
    }
}
Copier après la connexion

Vous rencontrerez le problème de l'ouverture de plusieurs connexions. En effet, la variable db est un pool de connexions plutôt qu'une connexion unique. Chaque fois que vous appelez Exec, une nouvelle connexion est ouverte et ajoutée au pool.

Solution : Réutiliser une seule connexion

Pour garantir qu'une seule connexion est utilisée pour plusieurs insertions, il est nécessaire de faire les modifications suivantes :

  • Définir une variable globale *sql.DB en dehors de la fonction principale et l'initialiser dans le fonction d'initialisation. Cela garantit que la connexion n'est établie qu'une seule fois pendant l'exécution du programme.
  • Dans la fonction principale, où les opérations d'insertion proprement dites sont effectuées, aucune nouvelle connexion ne doit être ouverte. Au lieu de cela, la variable globale db doit être utilisée pour toutes les opérations d'insertion ultérieures.

Le code corrigé doit ressembler à ce qui suit :

var db *sql.DB

func init() {
    var err error
    db, err = sql.Open("postgres", "connectionURL")
    if err != nil {
        log.Fatal(err)
    }

    if err = db.Ping(); err != nil {
        log.Fatal(err)
    }
}

func main() {
    for i := 0; i < 10; i++ {
        // Insert row
        _, err := db.Exec("INSERT INTO table VALUES (...)")
        if err != nil {
            log.Fatal(err)
        }
    }
}
Copier après la connexion

En implémentant ces modifications, vous pouvez réutiliser efficacement une seule connexion à la base de données Postgres pour toutes les opérations d'insertion, éliminant ainsi le problème de l'ouverture de connexions excessives et maximisant l'efficacité de la base de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal