Vous êtes sur la page 1sur 7

CERI AVIGNON

RAPPORT PL/PGSQL

Compte Rendu TP1 : PL/pgSQL

Ralis Par : Youssef Skalli

PAGE 1 SUR 7

CERI AVIGNON

RAPPORT PL/PGSQL

Exercice 1 :
Lors de lxcu4on du chier sco8_load.pgsql, on remarque que les lignes suivantes apparaissent dans le chier.log

M1=> \i 'sco8_load.pgsql'

psql:sco8_load.pgsql:16: NOTICE: ALTER TABLE / ADD PRIMARY KEY crera un index implicite PKdept pour la table dept dept --> deptnum est la cl primaire de la table dept, un index PKdept sera cr pour la table

psql:sco8_load.pgsql:38: NOTICE: ALTER TABLE / ADD PRIMARY KEY crera un index implicite PKemp pour la table emp

ADD CONSTRAINT "PKemp" PRIMARY KEY(empno); empnum --> cl primaire de la table emp

Exemple dune ligne sur la table emp : INSERT INTO emp VALUES (7698,'BLAKE','MANAGER',30,7839,'1-MAY-81',2850,NULL,0,'Bowling'); --> ce8e ligne permet dajouter un u4lisateur blake, dont lid est unique (cl primaire) dans la table emp.

PAGE 2 SUR 7

CERI AVIGNON

RAPPORT PL/PGSQL

Exemple dune requete SQL : select * from emp --> commande pour acher tous les u4lisateurs de la table emp (avec tous les champs)

Exemple dune requete SQL avec condi4ons (achier les u4lisateurs dont le job est SALESMAN

select * from emp where job=('SALESMAN');

PAGE 3 SUR 7

CERI AVIGNON

RAPPORT PL/PGSQL

Exercice 2 :
Lexcu4on du chier user_objetcs.pgsql :

table cursor is select * from pg_tables where tableowner=username order by tablename;

--> recuperer les informations utiles sur chaque table de la base de donne dont
lutilisateur est username, uapv1201458) par exemple

user cursor is select * from pg_user where usename=username;

-->pg_user permet de recuperer les informa4ons de l u4lisateur (nom, id, savoir si il est superu4lisateur...)

index cursor is select * from pg_indexes where schemaname=username;

-->La vue pg_indexes fournit un accs aux informations utiles sur chaque index de la
base de donnes, cette requete permet donc de rcuprer toutes les vues d un utlisateur.

PAGE 4 SUR 7

CERI AVIGNON

RAPPORT PL/PGSQL

Exercice 3 :

PAGE 5 SUR 7

CERI AVIGNON

RAPPORT PL/PGSQL

On u4lise la commande sql suivante :

ac4vity cursor is select * from pg_stat_ac4vity where datname = Stats AND current_query IS NOT NULL AND query_start IS NOT NULL;

--> on rcupre depuis pg_stat_ac4vity les stats relavies la bdd u4lise par un u4lisateur, ce qui permet de vrier son ac4vit en cours.

Pour calculer blks_ra4o et xact ra4o on u4lise les calculs suivants :

xact_commit=Infos.xact_commit; xact_rollback=Infos.xact_rollback; xact_ra4o=xact_rollback/(xact_rollback+xact_commit);

blks_read=Infos.blks_read; blks_hit=Infos.blks_hit; blks_ra4o=blks_read/(blks_read+blks_hit);

xact_ra4o et blks_ra4o sont en oat pour avoir plusieurs chires aprs la virgule, on a choisi de les me8re 5 chires aprs la virgule. ac4vity cursor is select * from pg_stat_ac4vity where datname = Stats AND current_query IS NOT NULL AND query_start IS NOT NULL;

--> on ache seulement les informa4ons de la bdd u4lisateur quand elle n est pas nulle (current_query et query_start ne doivent pas tre null, an de ne pas surcharger la bdd) pg_stats_database sert acher le nombre de processus serveur ac4fs, le nombre total de transac4ons valides et le nombre de celles qui ont t annules sur la bdd. pg_stats_ac4vity sert connaitre le nombre de connexions une bdd, le nom de la bdd, l id du client, son addresse ip, son port de connexion...

PAGE 6 SUR 7

CERI AVIGNON

RAPPORT PL/PGSQL

PAGE 7 SUR 7