Liste de contrôle rapide des performances de la base de données Firebird
Windows
-
Définissez le plan d’alimentation sur hautes performances (+20 % sur Windows Server 2016+) ?
-
Définissez la politique de cache d’écriture pour les lecteurs sur Activer le cache d’écriture
-
En cas de RAID, vérifiez que le pilote moderne est installé et que le RAID est configuré correctement.
Linux
-
Max Open Files est-il défini sur 49999 ? Vérifiez-le avec cat /proc/$(pgrep firebird)/limits, la valeur par défaut est 4096, augmentez-la si nécessaire : définissez-la dans le fichier de service Firebird avec LimitNOFILE=49999
-
Vérifiez le nombre de VMA avec cat /proc/sys/vm/max_map_count, la valeur par défaut est 64K, elle doit être définie sur 250K : ajoutez à /etc/sysctl.conf la ligne vm.max_map_count=250000
Configuration Firebird (recommandations pour Firebird 3 uniquement)
-
Assurez-vous de ne pas utiliser les DefaultDBCacheBuffers par défaut, ils sont très faibles (256 et 8K) ! Définissez 1024 pour SuperClassic et 100K pour SuperServer. N’utilisez pas Classic dans Firebird 3, il est lent.
-
Assurez-vous que DefaultDBCacheBuffers n’est pas remplacé dans l’en-tête de la base de données : vérifiez-le avec gstat -h database -> Page Buffers, il doit être à 0. Définissez-le à 0 avec gfix -buffers 0.
-
Définissez FileSystemCacheThreshold =100M afin d’utiliser le cache de fichiers du système d’exploitation
-
Pour SuperServer, allouez pour DefaultDBCacheBuffers moins de 30 % de la RAM. Si vous avez de nombreuses bases de données, comptez la mémoire pour toutes, et utilisez databases.conf pour les configurer séparément. Vérifiez le nombre total de connexions et de bases de données avec la commande :
fbsvcmgr.exe localhost:service_mgr user sysdba password masterkey info_svr_db_info
-
Pour SuperServer et SuperClassic, définissez TempCacheLimit à 25 % de la RAM, pour Classic - 64M.
-
Définissez LockMemSize=30M, c’est une bonne valeur initiale, puis surveillez la croissance de la table de verrous avec la commande fblockprint -d databasename et augmentez LockMemSize si nécessaire
-
Définissez LockHashSlots=20011, c’est une bonne valeur initiale, surveillez Hash Lengths dans lockprint
Base de données
-
Pour les bases de données > 50 Go, utilisez la taille de page maximale : 16 Ko (par défaut 8 Ko), pour optimiser les E/S de lecture et la profondeur des index. Définissez-la lors de la restauration avec le commutateur “page” : gbak**-c -page 16384**
-
N’utilisez pas le drapeau no_reserve pour les bases de données non en lecture seule. Supprimez-le avec **gfix -**use reserve
-
Surveillez la différence entre les marqueurs de transactions (OIT, OST, OAT, Next) depuis gstat -h.
-
Un grand (OST-OIT) signifie que la base de données contient probablement beaucoup de versions de déchets et nécessite un sweep. Planifiez un sweep explicite pour la nuit avec gfix -sweep
-
Un grand (Next-OAT) signifie une longue transaction active en écriture qui bloque le ramasse-miettes. Vérifiez les tables MON$ pour voir quelle application maintient la transaction ouverte et corrigez-la.
Test de 5 minutes pour estimer les performances de Firebird
Utilisez le script open-source INSERT-UPDATE_DELETE : www.ib-aid.com/dbtestActuellement, le serveur testé le plus rapide a montré 18140 enregistrements insérés par seconde, quel sera votre résultat ?
Comment améliorer les performances de Firebird au-delà de ce réglage simple ?
Essayez le service d’optimisation Firebird d’IBSurgeon www.ib-aid.com/perf : nous savons comment faire fonctionner votre Firebird plus rapidement.