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 :
J'ai un avg_row_len de 156 o obtenu par la requête
- 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... )
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
4
5 SELECT table_name,round(avg(avg_row_len)) FROM dba_tab_subpartitions WHERE table_name ='MaTable' GROUP BY table_name
ou $1 est la table et $2 la partition
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);
L'estimation (à l'extent près) de l'occupation de la table est obtenue par la commande suivante :
J'arrive, enfin à ma question...
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
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%...
Partager