Table de test : description

Soumis par jpp le lun 26/04/2010 - 15:24

Afin de "tester" un peu le fonctionnement des bases de données avec une table un peu "lourde" qui oblige le moteur à "sortir de ses caches". Le cache des données doit être positionné à une valeur de l'ordre de 256 Mo. J'utilise une table statistique de l'activité des machines virtuelles. Cette table comporte environ 300 000 lignes et est donc très insuffisante en volume.

create table xen_stat_v2
(   DATEC         varchar(10),
    HEUREC        varchar(5),
    SERVEUR       varchar(16),
    DOMNOM        varchar(16),
    DELTACPU      decimal,
    DELTARX       decimal,
    DELTATX       decimal,
    CPUPCT        decimal,
    NBSECR        decimal,
    NBSECW        decimal
)

La syntaxe du "CREATE TABLE" est à adapter légèrement selon la BDD cible.

Cette table comporte, outre l'heure (HEUREC au format HH:MM), une colonne "DATEC" au format AAAAMMJJLa procédure de "gonflage" consiste donc à :

  • Calculer la différence entre les dates (AAAAMMJJ) mini et maxi sur la table permanente
  • Créer une nouvelle table de travail avec une date = (date originale) - différence calculée en (1) par un select sur la table originale.
  • Insérer cette nouvelle table dans la table originale
  • Et on recommence autant de fois qu'il faut pour dépasser les 13 millions de lignes. Là aussi la syntaxe est à adapter selon la base cible ...

Les opérations mesurées ensuite sont :
La création de deux index :
create index xen_stat_v2_i1 on xen_stat_v2 (DOMNOM, DATEC, HEUREC)
create index xen_stat_v2_i2 on xen_stat_v2 (DATEC, DOMNOM, HEUREC)
Le calcul des statistiques sur cette table :
Lancement de quelques "select" donnant des totaux avec un group by / order by :

select count(*)
    from xen_stat_v2

select DOMNOM,count(*)
    from xen_stat_v2
group by DOMNOM
order by DOMNOM

select DOMNOM,SERVEUR,count(*)
    from xen_stat_v2
group by DOMNOM,SERVEUR
order by DOMNOM,SERVEUR

Ces quelques opérations donnent simplement un petit avant-goût de la performance globale.