Miguel GarzonCrUise Lab - SITE
CSI3530 - PROJET 2013
Symmetric Hash Join
Instructions
• Travaillez sur les machines à SITE
• Ou connectez-vous via SSH
• Utilisez la version 8.1.4 de PostgreSQL
• Travaillez en groupes de 3-4 personnes
• Date limite: Décembre 8 2010
• Si vous avez de difficultés techniques, envoyez moi une capture d’écran (print screen) et de details (stack trace) sur l’erreur
Introduction
• Vous allez implémenter la technique ‘Symmetric Hash Join’
• Le but est de vous donner l’expérience avec un SGBD de production.
• Vous allez implémenter des nouvelles fonctionnalités en rapport avec la performance du SGBD (feature performance)
• Votre tâche se concentre sur l’optimiseur et l’exécuteur du SGBD.
Barème d’évaluation
• Rapport explicatif - 10% (Optionnel) (3-5 pages)– Explication de l’algorithme– Test cases
Exactitude du code (60%)
-Code compile?-Système répond correctement aux requêtes de test
Efficacité de l’algorithme (30%)
-Selon l’`énoncé du projet.-Voir section 10.8.1
Clarté(10%)
- Noms de variables, commentaires, etc.
Quoi soumettre?
• nodeHashjoin.c• nodeHash.c• execnodes.h• createplan.c.
ANNEXES
How do I know it's working? Testing your Code
• You are a Guru, don’t test it, send it to me!• Otherwise,
– Disable other join operators to force the query optimizer to use your join operator.
– Create at least two tables, do a join of those two tables (equality join).
– Validate the results.
How do I know it's working? Testing your Code
1. Type in console:
initdb data
This will initialize storage for the DBMS within your home directory in the pgdata directory.
You should see a message indicating SUCCESS. (See slides from lab1)
2. Start server :
pg_ctl start
3. Create a db
createdb
4. Interact with db
psql
To stop:
pg_ctl stop
Postgresql
• La tâche du planificateur/optimiseur est de créer un plan d'exécution optimal. En fait, une requête SQL donnée (et donc, l'arbre d'une requête) peut être exécutée de plusieurs façons, chacune arrivant au même résultat. Si ce calcul est possible, l'optimiseur de la requête examinera chacun des plans d'exécution possibles pour finir par sélectionner le plan d'exécution estimé comme étant le plus rapide.
• L'exécuteur prend le plan envoyé par le planificateur/optimiseur et l'exécute récursivement pour extraire l'ensemble requis de lignes. Il s'agit principalement d'un mécanisme de pipeline en demande-envoi. Chaque fois qu'un nœud du plan est appelé, il doit apporter une ligne supplémentaire ou indiquer qu'il a fini d'envoyer des lignes.
Additional Help
• http://doxygen.postgresql.org/: Source code browser