|
|||||||
| Optimisations Forum de conseils pour les optimisations des performances SGBD |
|
|
Publicité ' | |||||||||||||||||||||||||
|
|
|
Outils de la discussion |
|
|
#1 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 954 ![]() |
Bonjour,
La plupart des développeurs sont persuadés que mettre toutes les informations dans une même table rendra leur base de données plus rapide... Et l'on voit apparaître dans la base de nombreuses tables de plusieurs dizaines de colonnes. C'est une vue à court terme, car dés que la base de données commence à croitre ou que le nombre d'utilisateur augmente, les performances deviennent vite catastrophique... Cet article explique pourquoi... http://blog.developpez.com/sqlpro/p1...ances-petites/ Vos commentaires sont les bienvenus ! A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
20
|
|
|
#2 |
![]() ![]() |
Bon article, j'y mettrai deux bémols dont on peut discuter.
Les verrous Avec Oracle, un verrou exclusif ne bloque que la ligne en écriture, pas toute la table. On peut toujours lire la table, insérer de nouvelles données, mettre à jour des données sur d'autres lignes. Donc ce n'est pas pénalisant outre mesure. Le type de base de données Par type j'entends utilisation. Une base de données OLTP ou OLAP n'ont pas du tout les mêmes contraintes d'utilisation. La première fait beaucoup de petites opérations fortement transactionnées multi utilisateurs, la seconde est mono utilisateur, lecture seule en journée et mise à jour la nuit. Les pros de la dénormalisation en OLAP auront sûrement quelques arguments à avancer (mais je n'en fais pas partie). Edit : 21% sur ma base OLAP ! Je vais me faire disputer !
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#3 | |
|
Membre Expert
![]() |
Citation:
Bon c'est du OLAP alors ca va
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
|
|
#4 | |
|
Membre Expert
![]() ![]() François DurandSpécialiste Delivery Mainframe IBM Inscription : octobre 2005 Messages : 1 096 ![]() |
Je ne comprends pas cette phrase de l'article :
Citation:
|
|
|
|
10
|
|
|
#5 |
|
Membre du Club
![]() Inscription : décembre 2008 Messages : 36 ![]() |
ca me semble vraiment un raccourci rapide
ce que je retiens de l'article, c'est qu'il faut bien respecter la normalisation... Apres honnetement, ca me semble un raccourci rapide de dire si vous avez plein de tables avec plein de colonnes vous aurez des problemes de performances... Soyons serieux 5 minutes, par exemple il y a des milliers de systèmes SAP dans le monde avec des bases de données de plusieurs To , avec des dizaines de milliers de tables contenant parfois des dizaines de colonnes et ces systèmes fonctionnent très bien... |
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 954 ![]() |
Vous avez raison, je perle de base de données relationnelles, pas décisionnelles.
Sur le nombre de colonnes par table, même SAP reste dans les standards. En sus il faut aussi relativiser... 50 colonnes dont 40 de type booléen, ce n'est pas grand chose. A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
10
|
|
|
#7 | ||||||
|
Invité de passage
![]() Inscription : juillet 2011 Messages : 1 ![]() |
Ca m'a l'air bien théorique et bien coloré "noir ou blanc"... Ou bien on est "normalisé" ou bien on met "tout dans une seule table"... Un peu exagéré comme commentaire, non?
Si on parle Oracle, je ne vois pas comment joindre des tables de millions de lignes ne coûte "presque rien". exemple: CLIENT( id, nom, ... ) PROFESSION( id, flag_liberale, description, ... ) PROFESSIONS( client_id, flag_prof_principale, profession_id ) ADRESSES( client_id, adresse_no, code_postal, rue, ... ) Et maintenant je cherche les gens ayant une profession libérale et habitant dans "75...." Code :
Siebel par exemple a fait un peu de dénormalistation en entrant l'adresse principale dans la table "client". Ca devient Code :
Et on peut mettre aussi un flag "prof_liberale" dans CLIENT pour arriver à Code :
J'ai des tables qui ont plus d'un milliard d'enregistrements J'ai des tables qui ont plus de 800 colonnes ((heureusement, pas les mêmes ;-)) J'ai des utilisateurs qui ne se plaignent pas (enfin, pas toujours) de la performance. |
||||||
|
|
10
|
|
|
#8 | |||||||||
![]() ![]() |
Citation:
![]() Code :
Citation:
Citation:
Citation:
Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||||||||
|
00
|
|
|
#9 | ||
|
Membre Expert
![]() ![]() François DurandSpécialiste Delivery Mainframe IBM Inscription : octobre 2005 Messages : 1 096 ![]() |
Citation:
Citation:
|
||
|
|
10
|
|
|
#10 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 954 ![]() |
Luc, donne moi plus de 20 attributs directement lié à :
1) une personne 2) une facture 3) un produit ... A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#11 |
|
Membre Expert
![]() Inscription : mars 2005 Messages : 1 565 ![]() |
Des coordonnées dans un espace à 20 dimensions
|
|
|
00
|
|
|
#12 | |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
Citation:
Vous vous mettez des battons dans les roues tout seul si je ne m'abuse ? Là vous connaissez votre volumétrie, vos besoin fonctionnelles et vous ne vous adaptez pas .. |
|
|
|
00
|
|
|
#13 | |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Citation:
Année Production Poids Répartition AV/AR (kg) Longueur Largeur Hauteur Empattement Jantes Pneumatique Type (Nb Cylindres) Position Materiaux (Culasse/Bloc) Nombre de soupapes par cylindre Distribution Alimentation allumage Suralimentation Cylindrée (Cm3) Alésage x course (mm) Rapport Volumétrique Régime Maximum (tr/min) Puissance Maxi (ch à tr/min) Puissance au litre (ch) Couple maxi (mkg a tr/min) Couple au litre (mkg) Boite de vitesse Nombre de vitesse Transmission suspension Avant Suspension Arriere Direction Type de Freins Diametres des Freins (mm Etrier Piston non ?
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
|
10
|
|
|
#14 | |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Citation:
En effet, la syntaxe normalisée pour les jointures est de deux types : EXPLICITE et IMPLICITE. Si effectivement SQL92 definit la jointure explicite, La BNF SQL92 ne bannit pas la jointure implicite. En effet vous trouverez dans la regle de la grammaire SQL (BNF Grammar for ISO/IEC 9075:1992 - Database Language SQL (SQL-92)) pour la clause FROM : FROM <from_clause> <from_clause> ::= FROM <table_reference>[{<comma><table_reference>}...] <comma> ::= , En suivant donc cette grammaire, rien n'empeche d'ecrire FROM TableA, TableB Donc la norme d'une jointure n'est pas uniquement celle d'une jointure explicite. Vous pouvez (et j'en suis le premier) vous fixer une norme de developpement en n'utilisant que cette derniere, mais vous n'avez en aucun cas le droit de dire que c'est la norme SQL92 !!
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
|
21
|
|
|
#15 |
![]() ![]() |
Peut-être, je ne connais pas la norme par coeur.
Mais je ne compte plus le nombre de requêtes que j'ai débugguées dans nos forums rien qu'en récrivant les jointures avec la syntaxe explicite. C'est pas pour rien qu'on est passé du mélange des conditions de jointures et des conditions de restriction à leur séparation je pense ? Si cela a été fait, c'est que la syntaxe explicite est meilleure que la syntaxe implicite et c'est pour ça que je rappelle cette meilleure syntaxe et que j'encourage vivement tout le monde à l'utiliser et à bannir la vieille syntaxe qui présente tant de défauts.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#16 |
|
Membre Expert
![]() |
Yanika_bzh concernant votre exemple (certes je chipote):
toutes les données liées au moteur seraient dans une table à part puisque ces moteurs sont communs à plusieurs modèles... Les "embarquer" dans votre table principale entraîne une redondance de données...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
10
|
|
|
#17 | |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Citation:
Imaginons que vous geriez des véhicules de courses, ceux ci possedent des caractéristiques modifiées par rapport a celles des constructeurs et des moteurs d'origine (ex, rabaissage de la cylindrée, rabottage des blocs, modification de la courses de pistons). Les modifications n'etant pas sérialisées, les caractéristiques non plus... Maintenant, vous avez raison, je veux gerer des voitures standards de série, elles peuvent posseder le meme modele de moteur, donc, hop normalisation, et je me retrouve avec une entitée moteur... Maintenant que vais je pouvoir mettre dans cette nouvelle table ?? Essayons pour voir : Identifiant : Necessaire bien sur Description Encombrement Energie Aspiration Nombre de cylindres Position des cylindres Alesage Cylindrée Rapport volumétrique Ordre d'allumage Sens de rotation Poids du moteur Equipé Couple Maxi Regime couple Maxi Regime Maxi a vide Regime mini ralenti Capacité d'eau Pression de pressurisation maximum Valeur de reglage thermostat ... ...
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
|
00
|
|
|
#18 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 954 ![]() |
De la même manière, le couple va dépendre de la boite de vitesse/cylindrée. Donc, sortez les attributs de couple dans une table de jointure moteur/BV.
Vous commencez donc à, comprendre l'art de la modélisation ! A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#19 | |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Citation:
Votre boite de vitesse ne modifiera pas le couple MAXI, mais le couple TRANSMIS.
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
|
00
|
|
|
#20 | |
|
Membre Expert
![]() |
Citation:
J'allais le dire.... SQL PRO: le couple affiché sur la fiche technique est le couple développé par le moteur... il ne dépend donc pas de la boite de vitesse. Mais nous chipotons...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com