SQL - Réglage de la base de données

Il faut du temps pour devenir un expert en base de données ou un administrateur de base de données expert. Tout cela vient avec une grande expérience dans diverses conceptions de bases de données et de bonnes formations.

Mais la liste suivante peut être utile pour que les débutants aient une bonne performance de base de données -

  • Utilisez la conception de base de données 3BNF expliquée dans ce didacticiel dans le chapitre Concepts du SGBDR.

  • Évitez les conversions de nombre en caractère, car les nombres et les caractères se comparent différemment et entraînent une dégradation des performances.

  • Lorsque vous utilisez l'instruction SELECT, ne récupérez que les informations requises et évitez d'utiliser * dans vos requêtes SELECT car cela chargerait le système inutilement.

  • Créez vos index avec soin sur toutes les tables où vous avez des opérations de recherche fréquentes. Évitez l'indexation sur les tables où vous avez moins d'opérations de recherche et plus d'opérations d'insertion et de mise à jour.

  • Une analyse complète de la table se produit lorsque les colonnes de la clause WHERE ne sont pas associées à un index. Vous pouvez éviter une analyse complète de la table en créant un index sur les colonnes utilisées comme conditions dans la clause WHERE d'une instruction SQL.

  • Faites très attention aux opérateurs d'égalité avec des nombres réels et des valeurs de date / heure. Ces deux éléments peuvent présenter de petites différences qui ne sont pas évidentes à l'œil nu, mais qui rendent une correspondance exacte impossible, empêchant ainsi vos requêtes de retourner des lignes.

  • Utilisez judicieusement la correspondance de motifs. LIKE COL% est une condition WHERE valide, réduisant le jeu renvoyé aux seuls enregistrements dont les données commencent par la chaîne COL. Cependant, COL% Y ne réduit pas davantage le jeu de résultats renvoyé car% Y ne peut pas être évalué efficacement. L'effort pour faire l'évaluation est trop important pour être pris en compte. Dans ce cas, le COL% est utilisé, mais le% Y est jeté. Pour la même raison, un caractère générique% COL en tête empêche efficacement l'utilisation de l'ensemble du filtre.

  • Affinez vos requêtes SQL en examinant la structure des requêtes (et sous-requêtes), la syntaxe SQL, pour découvrir si vous avez conçu vos tables pour prendre en charge une manipulation rapide des données et écrit la requête de manière optimale, permettant à votre SGBD de manipuler les données efficacement .

  • Pour les requêtes exécutées régulièrement, essayez d'utiliser des procédures. Une procédure est un groupe potentiellement important d'instructions SQL. Les procédures sont compilées par le moteur de base de données puis exécutées. Contrairement à une instruction SQL, le moteur de base de données n'a pas besoin d'optimiser la procédure avant son exécution.

  • Évitez d'utiliser l'opérateur logique OR dans une requête si possible. OR ralentit inévitablement presque toutes les requêtes sur une table de taille importante.

  • Vous pouvez optimiser les chargements de données en masse en supprimant les index. Imaginez la table d'historique avec plusieurs milliers de lignes. Cette table d'historique est également susceptible d'avoir un ou plusieurs index. Lorsque vous pensez à un index, vous pensez normalement à un accès plus rapide aux tables, mais dans le cas de chargements par lots, vous pouvez bénéficier de la suppression des index.

  • Lors de l'exécution de transactions par lots, effectuez COMMIT après un bon nombre de création d'enregistrements au lieu de les créer après chaque création d'enregistrement.

  • Prévoyez de défragmenter la base de données régulièrement, même si cela signifie développer une routine hebdomadaire.

Outils de réglage intégrés

Oracle dispose de nombreux outils pour gérer les performances des instructions SQL, mais parmi eux deux sont très populaires. Ces deux outils sont -

  • Explain plan - L'outil identifie le chemin d'accès qui sera emprunté lors de l'exécution de l'instruction SQL.

  • tkprof - mesure les performances en fonction du temps écoulé pendant chaque phase du traitement des instructions SQL.

Si vous souhaitez simplement mesurer le temps écoulé d'une requête dans Oracle, vous pouvez utiliser la commande SQL * Plus SET TIMING ON.

Consultez la documentation de votre SGBDR pour plus de détails sur les outils mentionnés ci-dessus et la défragmentation de la base de données.