Maison > Article > base de données > Comment créer des requêtes MySQL hautes performances en utilisant le langage Go
Avec la croissance continue du volume de données et le développement d'entreprises complexes, les exigences en matière de performances des bases de données sont de plus en plus élevées. En tant que base de données relationnelle populaire, MySQL peut être optimisé en termes de performances de plusieurs manières, notamment en utilisant des langages de programmation hautes performances pour le développement. Cet article explique comment utiliser le langage Go pour créer des requêtes MySQL hautes performances.
Avant d'utiliser le langage Go pour faire fonctionner MySQL, vous devez d'abord installer le pilote MySQL. Le langage Go fournit une variété de pilotes, tels que la base de données/sql officiellement fournie et le go-sql-driver/mysql fourni par un tiers. Parmi eux, go-sql-driver/mysql est largement utilisé car il est stable, facile à utiliser et offre de bonnes performances.
Vous pouvez télécharger et installer go-sql-driver/mysql en utilisant la commande suivante :
go get github.com/go-sql-driver/mysql
db, err := sql.Open("mysql", "user:password@tcp(host:port)/dbname")Parmi eux, l'utilisateur, le mot de passe, l'hôte, le port et le nom de base de données représentent respectivement le nom d'utilisateur, le mot de passe et l'adresse de l'hôte. de MySQL, port et nom de la base de données. Si le serveur MySQL s'exécute localement, l'hôte peut utiliser localhost ou 127.0.0.1 à la place.
rows, err := db.Query("SELECT * FROM users WHERE age > ?", 18) defer rows.Close() for rows.Next() { var id int var name string var age int err := rows.Scan(&id, &name, &age) // handle error // process query results }Parmi eux, la fonction db.Query exécute un Requête SQL et renvoie un objet Rows, qui peut être transmis. La méthode Scan lit chaque ligne de données dans le jeu de résultats de la requête. Il convient de noter qu'après le traitement des résultats de la requête, la méthode rows.Close doit être appelée pour fermer le jeu de résultats, sinon le pool de connexions sera épuisé, affectant ainsi les performances du système.
db.SetMaxIdleConns(10) // 设置最大空闲连接数 db.SetMaxOpenConns(100) // 设置最大连接数Parmi eux, MaxIdleConns et MaxOpenConns représentent respectivement l'inactivité maximale. connexion dans le pool de connexions et le nombre maximum de connexions ouvertes. Il est recommandé d'ajuster en fonction des besoins réels pour maximiser les avantages du pooling de connexions.
stmt, err := db.Prepare("SELECT * FROM users WHERE age > ?") defer stmt.Close() rows, err := stmt.Query(18) defer rows.Close() // process query resultsDans le code ci-dessus, la fonction db.Prepare peut créer des instructions de requête SQL précompilées, qui peuvent puis être utilisé plusieurs fois. Exécutez la même requête en utilisant la méthode stmt.Query. Étant donné que les instructions SQL précompilées sont déjà compilées et mises en cache, le temps d'exécution de chaque requête peut être réduit.
tx, err := db.Begin() defer func() { if err := recover(); err != nil { tx.Rollback() return } tx.Commit() }() _, err = tx.Exec("INSERT INTO users (name, age) VALUES (?, ?)", "Tom", 20) // handle errorDans le code ci-dessus, la fonction tx.Begin peut créer une transaction et renvoyer un objet Tx . Utilisez l'objet Tx pour effectuer des requêtes SQL, telles que l'insertion d'un enregistrement utilisateur. Si la requête SQL est exécutée avec succès, la méthode tx.Commit est appelée pour valider la transaction ; si l'exécution de la requête SQL échoue, la méthode tx.Rollback est appelée pour annuler la transaction.
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!