Database Reference
In-Depth Information
8. N'utilisez jamais une requête du type «  SELECT MAX(...)+1 … » pour générer une clé
primaire.
Ce mode de calcul est à proscrire, car il peut conduire un jour ou l'autre au mieux à un
télescopage de clé, au pire à un blocage total. En effet, tant que la nouvelle ligne pourvue
de cette nouvelle clé n'est pas encore insérée dans la base, toute autre transaction peut
effectuer le calcul générant la même valeur. Ain de rendre cohérent ce mécanisme, il
faudrait programmer une transaction intégrant le calcul du max+1 et l'ordre d'insertion
avec la nouvelle clé (ce qui n'est pas aussi simple qu'il y paraît).
Préférez le mécanisme d'auto-incrément de votre SGBD qui pour Oracle est la séquence.
SEQUENCE et IDENTITY ont été normalisés (SQL:2008) SQL Server et IBM DB2 pren-
nent les deux en charge. PostGreSQL propose le SERIAL (équivalent du IDENTITY en
plus de la séquence).
9. Utilisez avec parcimonie les tables temporaires.
Chaque objet temporaire créé au sein d'un SGBDR déclenche une écriture coûteuse au
journal de transactions et dans le dictionnaire des données. Si de nombreuses transac-
tions sont effectuées en parallèle et qu'elles génèrent de nombreux objets temporaires, des
points de contention peuvent apparaître. Préférez l'utilisation de requêtes contenant des
fonctions table ou des CTE.
10. Utilisez des index, mais à bon escient.
Indexez vos clés étrangères et choisissez bien le mode d'indexage (B-tree, bitmap ou IOT).
Si une table IOT convient à une séquence, elle peut mener à des performances désas-
treuses pour une clé sémantique alphanumérique de taille variable.
Peu importe le nombre d'index d'une table, si chaque index apporte un gain considérable.
Avec un gain de 100 voire 1 000 (facilement obtenu sur des tables ayant un grand nombre
de lignes) c'est autant de temps de gagner pour les mises à jour, dont on oublie trop sou-
vent qu'elles nécessitent pour la plupart une lecture positionelle qui sera d'autant plus
rapide qu'il existe un index adéquat !
Mise en pratique
L'exercice 3.4 « La dénormalisation » vous invite à dénormaliser un schéma, mais quelle table
sera impactée ?
Dans l'exercice 3.5 « Ma psy oublie tout », vous devez aider ma psy qui oublie tout.
L'exercice 3.6 « Le planning d'une école de pilotage » est consacré à la gestion d'un planning
d'une école de pilotage.
Search WWH ::




Custom Search