Tutoriel 2026-02-18

Guide oxmysql : base de données FiveM moderne

TDYSKY

TDYSKY

Fondateur et développeur principal chez Agency Scripts

Pourquoi les bases de données sont importantes dans FiveM

Tout serveur FiveM sérieux a besoin d'un stockage de données persistant. Les inventaires des joueurs, les comptes bancaires, la propriété des véhicules, les contacts téléphoniques et les enregistrements de travail doivent tous survivre aux redémarrages du serveur. MySQL est le système de base de données standard utilisé dans l'écosystème FiveM, MariaDB étant un fork populaire offrant des performances améliorées. Comprendre comment configurer, interroger et optimiser ton base de données est essentiel pour créer des serveurs de jeu de rôle fiables, capables de gérer des centaines de joueurs simultanés sans perte de données.

Configuration de oxmysql

La ressource oxmysql est la norme moderne pour la connectivité MySQL dans FiveM, remplaçant les anciennes bibliothèques mysql-async et ghmattimysql. Pour le configurer, téléchargez la dernière version, placez-la dans ton dossier de ressources et configurez la chaîne de connexion dans ton server.cfg avec set mysql_connection_string. La chaîne de connexion suit le format mysql://user:password@host/database et prend en charge des paramètres supplémentaires pour le regroupement de connexions, les délais d'attente et SSL. Assurez-tu que oxmysql démarre avant toute ressource qui en dépend en le plaçant tôt dans ton commande de garantie.

Rédaction de requêtes

oxmysql propose plusieurs méthodes de requête : MySQL.query pour les instructions SELECT qui renvoient des lignes, MySQL.update pour les instructions UPDATE et DELETE qui renvoient le nombre de lignes affectées, MySQL.insert pour les instructions INSERT qui renvoient le dernier ID d'insertion, et MySQL.scalar pour les requêtes qui renvoient une seule valeur. Utilisez toujours des requêtes paramétrées avec le ? espace réservé pour empêcher les attaques par injection SQL. Transmettez les paramètres sous forme de tableau dans le deuxième argument plutôt que de concaténer les valeurs directement dans les chaînes de requête.

Modèles et promesses asynchrones

Toutes les opérations oxmysql sont asynchrones pour éviter de bloquer le thread du serveur lors de la communication avec la base de données. Tu peux utiliser une syntaxe de style rappel dans laquelle tu transmettes une fonction comme dernier argument, ou utiliser la syntaxe basée sur les promesses avec MySQL.query.await à l'intérieur d'un Citizen.CreateThread. La syntaxe wait se lit plus proprement et évite l'imbrication des rappels, mais rappelez-tu qu'elle ne peut être utilisée qu'à l'intérieur des coroutines. Pour le chargement des données de démarrage du serveur, utilisez le MySQL.ready fonction pour garantir que la connexion à la base de données est établie avant d’exécuter les requêtes initiales.

Meilleures pratiques de conception de schéma

Concevez tes tables de base de données avec des index appropriés sur les colonnes que tu interroges fréquemment, telles que les identifiants des joueurs. Utilisez les types de données appropriés pour chaque colonne afin de minimiser le stockage et d'améliorer la vitesse des requêtes. Stockez les données JSON dans des colonnes TEXT lorsque tu as besoin de schémas flexibles, mais évitez d'interroger fréquemment les structures JSON car elles contournent l'optimisation de l'index. Créez des relations de clé étrangère entre les tables associées pour maintenir l'intégrité des données et envisagez d'utiliser des transactions lorsque plusieurs insertions ou mises à jour associées doivent réussir ou échouer ensemble.

Optimisation et maintenance

Surveillez les performances de ton base de données en vérifiant les journaux de requêtes lentes et en analysant les plans d'exécution avec EXPLAIN. Mettez en cache les données fréquemment consultées dans la mémoire du serveur à l’aide des tables Lua pour réduire les allers-retours dans la base de données. Implémentez le regroupement de connexions via la configuration oxmysql pour gérer efficacement les requêtes simultanées. Planifiez des tâches régulières de maintenance de la base de données, telles que l'optimisation des tables et le nettoyage des enregistrements orphelins des lecteurs supprimés. Sauvegardez quotidiennement ton base de données à l'aide de mysqldump ou de solutions de sauvegarde automatisées pour éviter toute perte de données catastrophique due à des pannes matérielles ou à des tables corrompues.

Partager cet article

Prêt à améliorer votre serveur ?

Découvrez nos scripts FiveM premium dans la boutique Agency Scripts ou rejoignez notre communauté Discord pour le support et les mises à jour.