ch15 FR
ch15 FR
Aperçu
Mesures du coût de la requête
Opération de sélection
Tri
Opération de jointure
Autres opérations
Évaluation des expressions
Database System Concepts - 7th Edition 15.2 ©Silberschatz, Korth and Sudarshan
Étapes de base du traitement des requêtes
1. Analyse et traduction
2. Optimisation
3. Évaluation
Database System Concepts - 7th Edition 15.3 ©Silberschatz, Korth and Sudarshan
Étapes de base du traitement des requêtes
(suite)
Analyse et traduction
• Analyse: vérifier la syntaxe, vérifier les relations.
• Représentation interne de la requête: mettre la requête en format
d’algèbre relationnelle.
Optimisation
• Choisir l'expression d'algèbre relationnelle la moins coûteuse (ou
raisonnable).
Évaluation
• Le moteur d'exécution de requête prend un plan d'évaluation de
requête, exécute ce plan et renvoie les réponses au requête.
Database System Concepts - 7th Edition 15.4 ©Silberschatz, Korth and Sudarshan
Étapes de base du traitement des requêtes:
optimisation
Une expression d'algèbre relationnelle peut avoir de nombreuses
expressions équivalentes
• Par exemple, salary75000(salary(instructor)) est équivalent à
salary(salary75000(instructor))
Chaque opération d'algèbre relationnelle peut être évaluée à l'aide de
différents algorithmes
• En conséquence, une expression d'algèbre relationnelle peut être
évaluée de plusieurs manières.
L'expression annotée spécifiant une stratégie d'évaluation détaillée est
appelée plan d'évaluation. Par exemple,:
• Utiliser un index sur salary pour trouver des instructeurs avec un
salaire <75000,
• Ou effectuez une analyse complète des relations et éliminez les
instructeurs avec un salaire >= 75000
Database System Concepts - 7th Edition 15.5 ©Silberschatz, Korth and Sudarshan
Étapes de base: optimisation (suite)
Database System Concepts - 7th Edition 15.6 ©Silberschatz, Korth and Sudarshan
Mesures du coût de la requête
De nombreux facteurs contribuent au coût du temps
• accès disque, CPU et réseau de la communication
Le coût peut être mesuré en fonction
• Temps de réponse, c'est-à-dire le temps total écoulé pour répondre à
la requête, ou
• La consommation totale de ressources.
Nous utilisons la consommation totale de ressources comme une mesure
de coût.
• Le temps de réponse est plus difficile à estimer et la réduction de la
consommation de ressources est une bonne idée dans une base de
données partagée
Nous ignorons les coûts de processeur (CPU) pour plus de simplicité
• Les vrais systèmes prennent en compte le coût du processeur.
• Les coûts de réseau doivent être pris en compte pour les systèmes
parallèles.
Nous décrivons comment estimer le coût de chaque opération
Database System Concepts - 7th Edition 15.7 ©Silberschatz, Korth and Sudarshan
Mesures du coût de la requête
Le coût d’accès au disque peut être estimé comme suit:
• Nombre de recherches multiplié par le coût moyen de recherche
• Nombre de blocs lus multiplié par le coût moyen de lecture de bloc
• Nombre de blocs écrits multiplié par le coût moyen d'écriture de bloc
Pour plus de simplicité, nous utilisons le nombre de transferts de blocs à
partir du disque et le nombre de recherches comme des mesures de
coût.
• tT - le temps de transfert d’un bloc de données
En supposant pour la simplicité que le coût d'écriture est le même
que le coût de lecture.
• tS - temps pour une recherche (dans le disque).
• Coût des transferts de b blocs plus S recherches est:
b * tT + S * tS
tS et tT dépendent de l'endroit où les données sont stockées; avec des blocs
de 4 Ko:
• Disque magnétique haut de gamme: tS = 4 msec et tT = 0,1 msec
• SSD: tS = 20-90 microsec et tT = 2-10 microsec pour 4 Ko
Database System Concepts - 7th Edition 15.8 ©Silberschatz, Korth and Sudarshan
Mesures du coût de la requête (suite)
Database System Concepts - 7th Edition 15.9 ©Silberschatz, Korth and Sudarshan
Opération de selection: A=V (r)
Analyse des fichiers (Scannage)
Algorithme A1 (recherche linéaire). Analysez chaque bloc de fichier et
testez tous les enregistrements pour voir s'ils satisfont à la condition de
sélection.
• Estimation des coûts = br transferts de blocs+ 1 recherche
br désigne le nombre de blocs contenant des enregistrements de
la relation r
• Si la sélection porte sur un attribut clé, la recherche peut-être
interrompue.
coût = (br / 2) transferts de blocs+ 1 recherche
• La recherche linéaire peut être appliquée indépendamment de
condition de sélection ou
l'ordre des enregistrements dans le fichier, ou
disponibilité des index.
Remarque: la recherche binaire n'a généralement pas de sens si les
données ne sont pas stockées consécutivement
• sauf quand il y a un index disponible,
• et la recherche binaire nécessite plus de recherches que la
recherche d'index
Database System Concepts - 7th Edition 15.10 ©Silberschatz, Korth and Sudarshan
Sélections à l'aide d'indexes
Database System Concepts - 7th Edition 15.11 ©Silberschatz, Korth and Sudarshan
Sélections à l'aide d'indexes
Database System Concepts - 7th Edition 15.12 ©Silberschatz, Korth and Sudarshan
Sélections impliquant des comparaisons
Peut implémenter des sélections de la forme AV (r) ou A V(r) en utilisant
• un scan linéaire de fichier.
• ou en utilisant des indexes de la manière suivante:
A5 (index groupé, comparaison). (La relation est triée sur A)
Pour A V(r) utilise index pour trouver le premier tuple v et
balayer la relation séquentiellement à partir de là
Pour AV (r) scanner la relation séquentiellement jusqu'au premier
tuple> v; ne pas utiliser d'index
Complexité semblable à A3
A6 (index secondaire, comparaison).
Pour A V(r) utilise l’index pour trouver la première entrée d'index
v et scannez l'index séquentiellement à partir de là, pour trouver
les pointeurs vers les enregistrements.
Pour AV (r) scannez seulement les feuilles d'index pour trouver
des pointeurs vers des enregistrements, jusqu'à la première
entrée > v
Dans les deux cas, récupérez les enregistrements pointés.
Nécessite une E / S par enregistrement; L'analyse linéaire des
fichiers peut être moins chère!
Complexité semblable à A4
Database System Concepts - 7th Edition 15.13 ©Silberschatz, Korth and Sudarshan
Implémentation de sélections complexes
Conjonction: 1 2. . .n(r)
A7 (sélection conjonctive en utilisant un index).
• Applicable si quelques conditions ont des indexes disponibles.
Sélectionnez une combinaison de i et les algorithmes A1 à A7 qui
entraînent le moindre coût pour i (r).
Testez d'autres conditions sur le tuple après l'avoir récupéré dans la
mémoire tampon.
A8 (sélection conjonctive en utilisant un index composite).
• Utilisez l'index composite (à plusieurs clés) approprié si disponible.
A9 (sélection conjonctive par intersection d'identifiants).
• Nécessite des indexes avec des pointeurs d'enregistrement.
Utilisez l'index correspondant pour chaque condition et prenez
l'intersection de tous les ensembles obtenus de pointeurs
d'enregistrement.
Ensuite, récupérez les enregistrements du fichier.
Si certaines conditions n'ont pas d'indexes appropriés, appliquez le test
en mémoire.
Database System Concepts - 7th Edition 15.14 ©Silberschatz, Korth and Sudarshan
Algorithmes pour les sélections complexes
Database System Concepts - 7th Edition 15.15 ©Silberschatz, Korth and Sudarshan
Tri
Database System Concepts - 7th Edition 15.17 ©Silberschatz, Korth and Sudarshan
Exemple: tri externe à l'aide du tri-fusion
Database System Concepts - 7th Edition 15.18 ©Silberschatz, Korth and Sudarshan
Tri-fusion externe
M désigne la taille de la mémoire (en blocs).
i stocke le nombre courrant de runs.
Database System Concepts - 7th Edition 15.19 ©Silberschatz, Korth and Sudarshan
Tri-fusion externe (suite)
Database System Concepts - 7th Edition 15.20 ©Silberschatz, Korth and Sudarshan
Tri-fusion externe (suite)
Database System Concepts - 7th Edition 15.21 ©Silberschatz, Korth and Sudarshan
Tri par fusion externe (suite)
Analyse de coût:
• 1 bloc par exécution entraîne trop de recherches lors de la fusion
Utilisez plutôt bb blocs tampons par exécution
lire écrire bb blocs à la fois
Peut fusionner M / bb – 1 runs en un seul passage
• Nombre total de passes de fusion requises: log M / bb – 1(br/ M).
• Les transferts de bloc pour la création de l'exécution initiale ainsi que
pour chaque passe sont de 2br
pour le passage final, on ne compte pas le coût d'écriture
• nous ignorons le coût d'écriture final pour toutes les opérations
car la sortie d'une opération peut être envoyée à l'opération
parent sans être écrite sur le disque
Ainsi nombre total de transferts de blocs pour le tri externe:
2br (log M / bb – 1 (br / M) + 1)
• Recherche: diapositive suivante
Database System Concepts - 7th Edition 15.22 ©Silberschatz, Korth and Sudarshan
Tri par fusion externe (suite)
Database System Concepts - 7th Edition 15.23 ©Silberschatz, Korth and Sudarshan
Opération de jointure
Database System Concepts - 7th Edition 15.24 ©Silberschatz, Korth and Sudarshan
Jointure en boucles imbriquées
Database System Concepts - 7th Edition 15.25 ©Silberschatz, Korth and Sudarshan
Jointure en boucles imbriquées (suite)
Dans le pire des cas, s'il y a suffisamment de mémoire pour contenir un
seul bloc de chaque relation, le coût estimé est
nr bs + br transferts en bloc, plus nr + br recherches
Si la plus petite relation tient entièrement dans la mémoire, utilisez-la
comme relation interne.
• Réduit le coût à br + bs transferts de blocs et 2 recherches
En supposant que l'estimation du coût de disponibilité de la mémoire
dans le pire des cas est
• avec étudiant comme relation extérieure:
5000 400 + 100 = 2.000.100 transferts en bloc,
5000 + 100 = 5100 recherches
• avec takes comme relation extérieure
10000 100 + 400 = 1 000 400 transferts en bloc et 10 400
recherches
Si une relation plus petite (étudiant) tient entièrement en mémoire, le coût
estimé sera de 500 transferts en bloc.
L'algorithme de blocage des boucles imbriquées (diapositive suivante)
est préférable.
Database System Concepts - 7th Edition 15.26 ©Silberschatz, Korth and Sudarshan
Jointure en boucles imbriquées à blocs
Variante de jointure en boucle imbriquée dans laquelle chaque
bloc de relation interne est associé à chaque bloc de relation
externe.
for each bloc Br of r do begin
for each bloc Bs of s begin
for each tuple tr in Br begin
for each tuple ts in Bs begin
Vérifier si (tr, ts) satisfait la condition
de jointure
si vrai, ajoutez tr • ts au résultat.
end
end
end
end
Database System Concepts - 7th Edition 15.27 ©Silberschatz, Korth and Sudarshan
Jointure en boucles imbriquées indexée
Database System Concepts - 7th Edition 15.29 ©Silberschatz, Korth and Sudarshan
Jointure par tri-fusion
1. Trier les deux relations sur leur attribut de jointure (si ce n'est déjà fait sur la
jointure
les attributs).
2. Fusionner les relations triées pour former les jointures.
1. L'étape de jointure est similaire à l'étape de fusion de l'algorithme de tri-
fusion.
2.– La principale différence est la gestion des valeurs dupliquées dans
l'attribut de jointure. Les tuples avec la même valeur sur l'attribut de
jointure doivent être mis en correspondance.
Database System Concepts - 7th Edition 15.31 ©Silberschatz, Korth and Sudarshan
Jointure par tri-fusion (suite)
Database System Concepts - 7th Edition 15.33 ©Silberschatz, Korth and Sudarshan
Hash-Join (suite)
Database System Concepts - 7th Edition 15.34 ©Silberschatz, Korth and Sudarshan
Hash-Join*
Original
Relation OUTPUT Partitions
1
Database System Concepts - 7th Edition 15.37 ©Silberschatz, Korth and Sudarshan
Algorithme Hash-Join (suite)
Database System Concepts - 7th Edition 15.38 ©Silberschatz, Korth and Sudarshan
Gestion des débordements
On dit que le partitionnement est biaisé si certaines partitions ont
beaucoup plus de tuples que d'autres
Débordement de la table de hachage se produit dans la partition si si si
ne rentre pas dans la mémoire. Les raisons pourraient être
• Nombreux tuples en s avec la même valeur pour les attributs de
jointure.
• Mauvaise fonction de hachage.
Résolution de débordement peut être fait en phase de build
• Partition si est ensuite partitionné en utilisant une fonction de hachage
différente.
• Partition ri doit être partitionné de manière similaire.
Éviter un débordement effectue le partitionnement avec soin pour éviter
les débordements pendant la phase de construction
• Par exemple, la relation de construction de partition en plusieurs
partitions, puis les combiner
Les deux approches échouent avec un grand nombre de doublons
• Option de secours: utilisez la jointure de boucles imbriquées par blocs
sur les partitions débordées
Database System Concepts - 7th Edition 15.39 ©Silberschatz, Korth and Sudarshan
Coût de Hash-Join
Database System Concepts - 7th Edition 15.43 ©Silberschatz, Korth and Sudarshan
Autres opérations
Database System Concepts - 7th Edition 15.45 ©Silberschatz, Korth and Sudarshan
Autres opérations: agrégation
Database System Concepts - 7th Edition 15.46 ©Silberschatz, Korth and Sudarshan
Autres opérations: opérations sur les ensembles
Operations sur les ensembles (, et ): peut soit utiliser une
variante de la jointure à tri-fusion, soit une variante de jointure par
hachage.
Utiliser le hachage:
1. Partitionner les deux relations en utilisant la même fonction de
hachage
2. Traitez chaque partition i comme suit.
1. À l'aide d'une fonction de hachage différente, créez un index de
hachage en mémoire sur ri.
2. Traiter si comme suit
• r s:
1. Ajouter des tuples dans si à l'index de hachage s'ils ne
s'y trouvent pas déjà.
2. À la fin de si ajoutez les tuples de l'index de hachage au
résultat.
Database System Concepts - 7th Edition 15.47 ©Silberschatz, Korth and Sudarshan
Autres opérations: opérations sur les ensembles
Utiliser le hachage:
1. Partitionner r et s comme pour l’union,
2. comme avant, traitez chaque partition comme suit
1. créer un index de hachage sur ri
2. Traiter si comme suit
• r s:
1. sortie de tuples dans si au résultat s'ils sont déjà
présents dans l'index de hachage
• r - s:
1. pour chaque tuple dans si, s'il est présent dans l'index de
hachage, supprimez-le de l'index.
2. À la fin de si ajoutez les tuples restants dans l'index de
hachage au résultat.
Database System Concepts - 7th Edition 15.48 ©Silberschatz, Korth and Sudarshan
Autres opérations: jointure externe
Database System Concepts - 7th Edition 15.50 ©Silberschatz, Korth and Sudarshan
Évaluation des expressions
Database System Concepts - 7th Edition 15.52 ©Silberschatz, Korth and Sudarshan
Matérialisation
Database System Concepts - 7th Edition 15.53 ©Silberschatz, Korth and Sudarshan
Matérialisation (suite)
Database System Concepts - 7th Edition 15.54 ©Silberschatz, Korth and Sudarshan
Pipeline
Database System Concepts - 7th Edition 15.55 ©Silberschatz, Korth and Sudarshan
Pipeline (suite)
Database System Concepts - 7th Edition 15.56 ©Silberschatz, Korth and Sudarshan
Pipeline (suite)
Database System Concepts - 7th Edition 15.57 ©Silberschatz, Korth and Sudarshan
Opérations bloquantes
Database System Concepts - 7th Edition 15.58 ©Silberschatz, Korth and Sudarshan
Étapes du pipeline
Étapes du pipeline:
• Toutes les opérations d'une étape s'exécutent simultanément
• Une étape ne peut démarrer qu'après la fin de l'exécution des
étapes précédentes
Database System Concepts - 7th Edition 15.59 ©Silberschatz, Korth and Sudarshan
Pipeline pour de flux-continu des données
Flux de données
• Données entrant dans la base de données de manière continue
• Par exemple, réseaux de capteurs, clics d'utilisateurs,…
Requêtes continues
• Les résultats sont mis à jour lorsque les données en continu entrent
dans la base de données
• L'agrégation sur les fenêtres est souvent utilisée
Database System Concepts - 7th Edition 15.61 ©Silberschatz, Korth and Sudarshan
Fin du chapitre 15
Database System Concepts - 7th Edition 15.64 ©Silberschatz, Korth and Sudarshan