Je sais... Je sais... Probablement, j'enfonce une porte déjà ouverte...
Je m'en excuse par avance. Mais j'aimerais que l'on éclaire ma lanterne sur ci-dessous

Version : Oracle 9.2.0.6
J'ai une table avec les caractéristiques suivantes :
  • Sous-partitionnée
  • EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
  • 102 473 112 lignes
  • avg(avg_row_len) = 156o de la table dba_tab_subpartitions
  • occupation en tablespace = 26 287 Mo
  • pct_free=10, pct_used=40
  • Uniquement de truncate partition et insert par SQL*Loader sans direct path : jamais de delete, jamais de update (je sais que pct_free peut être amené à 0... )
J'ai un avg_row_len de 156 o obtenu par la requête
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
SELECT table_name,round(avg(avg_row_len)) 
FROM dba_tab_subpartitions 
WHERE table_name ='MaTable' 
GROUP BY table_name
Les statistiques obtenues quotidiennement (entre autres le avg_row_len) sont réalisées sur la nouvelle partition J-1 et obtenues par la commande
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
DBMS_STATS.GATHER_TABLE_STATS('OWNER','${1}', '${2}', estimate_percent => 75,  granularity => 'SUBPARTITION',cascade => TRUE);
DBMS_STATS.GATHER_TABLE_STATS('OWNER','${1}', '${2}', estimate_percent => 75, granularity => 'PARTITION',cascade => TRUE);
ou $1 est la table et $2 la partition

L'estimation (à l'extent près) de l'occupation de la table est obtenue par la commande suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
SELECT s.table_name AS latable,
           s.partition_name ,
           count(*) AS nb,
           sum  (e.BYTES)/1024/1024 AS taille
   FROM dba_extents e,dba_tab_subpartitions s 
   WHERE e.PARTITION_NAME=s.SUBPARTITION_NAME 
   AND table_name='MaTable'
   GROUP BY s.table_name,s.partition_name
J'arrive, enfin à ma question...
Pourquoi un avg_row_len=156o (ce qui me semble acceptable à ma connaissance des données chargées) alors que 26 827 Mo / 102 473 112 = 269o ? etc ...

Je m'attendais à une différence (il y a tjs un surcout de stockage de la donnée quelque soit le SGBDR) mais pas presque 72%...