Vous êtes sur la page 1sur 7

ORACLE : PARTITIONNEMENT & PERFORMANCE

Page 1 sur 7

ORACLE : PARTITIONNEMENT & PERFORMANCE

ORACLE : PARTITIONNEMENT & PERFORMANCE

Page 2 sur 7

Oracle : Partitionnement et performance

1. Definition
Les partitions permettent de dcouper les objets de base en petites parties plus faciles manipuler.

Trs rpandue dans les datawarehouses. Spcialement lorsque le volume de donnes augmente. C est une approche de t!pe " diviser pour mieu# rgner $. Les objets de base de donnes de t!pe table% inde# et vue matrialise peuvent &tre diviss en morceau# plus petits et plus grables ' les partitions. (end possible des oprations de maintenance des donnes au niveau des partitions. Les oprations comme'
o o o o o o

Le chargement de donnes% La construction des inde#% La mise jour des statistiques de l optimi)er *racle% La purge des donnes +Truncate ,artition-% La sauvegarde et la restauration ,eut amliorer la performance des requ&tes lances sur la table. L optimi)er *racle est capable de dterminer si certaines requ&tes peuvent obtenir une rponse en parcourant uniquement une ou quelques partitions. .e cette manire un parcours complet et couteu# de la table +full table scan- peut &tre vit. Cette caractristique est appele ,artition /limination ou .!namic ,artition ,runing.

Dans

es re!"#tes

e t$pe Data%are&o"se' le partitionnement

ta(le ) pl"sie"rs *ran s a+anta*es :

Les requ&tes .SS rcuprent souvent une forte proportion des colonnes de la table. .ans ces conditions l0optimiseur peut choisir de rcuprer les donnes par un full table scan plutot qu0en passant par un inde# car ce t!pe de scan est ralis en scannant les donnes par paquet de bloc1 +squattered read- alors que le scan d0inde# +qui ne contiendrait pas toute les colonnes de la requ&te- se fait bloc1 bloc1 +sequential read- puis les rowid ainsi trouves sont rcupres dans la table. Lorsqu0il e#iste des partitions et que le partition pruning s0applique% les

ORACLE : PARTITIONNEMENT & PERFORMANCE

Page 3 sur 7

donnes rcuprer peuvent &tre rcuprer par un bala!age rapide +scattered read- mais seulement sur les partitions ncessaires.

Le paralllisme +que l0on voquera dans un autre tutorial- sur ces tables partitionnes est dans certains cas beaucoup plus efficace. C0est le cas dans le cas de jointure entre deu# tables partionnes et jointent sur les critres qui forment le partitionnement +partition wise join-

2l e#iste plusieurs t!pe de partitionnement ' ,ar (ange ,ar List


,ar 3ash Composite +(ange43ash% (ange4List List43ash pour 5i et 67g et toutes les combinaisons en 66g-

Le partitionnement par (ange n0est pas ncessairement homogne et les partitions peuvent avoir des tailles diffrentes. .ans l0e#emple ci dessous% la table est partitionne en mois pour les donnes des 8 dernires annes et de l0anne en cours% puis les donnes plus anciennes sont stoc1es sur des partitions par anne. La dernire partition 9,*L.9 contient les donnes les plus anciennes. :n des avantages d0un tel partitionnement est d0affecter les partitions rcentes et senses &tre plus utilises dans le reporting sur le buffer pool ;//, +si celui<ci est dclar et non nul sur la configuration de l0instance-. .e cette manire les donnes des partitions rcentes vont &tre places dans un espace mmoire spcifique et dont la dure de rtention est plus longue que le buffer cache standard. Les partitions plus anciennes +par anne- ont quand elles l0option " C*=,(/SS $ de manire minimiser les 2*s lorsqu0on accde au# donnes de ces partitions.

ORACLE : PARTITIONNEMENT & PERFORMANCE

Page 4 sur 7

2l est galement important de bien comprendre le 9partition pruning9 ' Le partition pruning ou partition limination est la capacit qu l0optimiseur oracle de dterminer quelles sont la ou les partitions concernes par la requ&te. Si le prdicat d0e#traction +where- est form de manire convenable pour l0optimiseur% celui<ci sera capable d0appliquer le partition pruning. 2l e#iste deu# t!pes de partition pruning '

Le pruning statique ' le prdicat est un litral ' where jour >? 0@76776760 Le pruning d!namique ' le predicat est une variable binde ou calcule ' where jour >? trunc+s!sdate%0AAAA0-

ORACLE : PARTITIONNEMENT & PERFORMANCE

Page 5 sur 7

.ans ces deu# cas l0optimiseur est capable de dterminer qu0il lui faudra bala!er certaines partitions. .ans le premier cas% il est certain des partitions bala!er% dans le deu#ime cas% il ne le saura vraiment qu0au moment de l0e#cution. Le partition pruning ne peut pas s0appliquer si la requ&te utilise une fonction sur la colonne support du partitionnement. /#emple ' where substr+jour%6%B- >? 0@767760

.ans ce cas l0optimiseur scannera toutes les partitions C 2l est donc e#tr&mement important de bien paramtrer son application pour que celle<ci profite pleinement du partitionnement et plus particulirement du partition pruning. Partition ,ise -oin Les jointures entre deu# tables partitionnes sur des critres comparables pourront galement bnficier du partitionnement. Les jointures seront ralisables sur des jeu# de donnes plus restreint et en parallle. 2l est possible de combiner les avantages du partition pruning et en plus de profiter d0un partition wise join sur un autre critre en sous partitionnant. Le partitionnement h!brique avec des sous partitions par hash permet de '

,rofiter du partition pruning sur les partitions mres (partir les donnes sur les tablepaces4fichiers +c0est une sorte de stripping des donnes-

(aliser des jointures 9wise9 avec utilisation massive du parallelisme

Le sous partitionnement par hash devra se faire sur une colonne qui permet de rpartir de manire quitable les donnes dans les sous< partitions pour rendre le sous<partitionnement le plus efficace possible. Si vous ave) plusieurs colonnes candidates pour le sous<partitionnement prene) la plus utilise dans les jointures et si vous ave) encore des colonnes e#<aequo% prene) la colonne avec le plus de valeurs distinctes.

ORACLE : PARTITIONNEMENT & PERFORMANCE

Page 6 sur 7

.. T$pes

e partitionnements

2l e#iste 8 grands t!pes de partitionnements '


b! range ' on dfinit les partitions par tranche suprieure e#clusive +toutes les donnes D 7b! list ' on dfinit une valeur par partition +utilis lorsque la liste de valeur pour le champ considr est faible-

b! hash ' la partition de stoc1age est calcule d!namiquement par un calcul de t!pe hash code% ce mode impose un nombre de partitions @En

composite ' c0est une mthode de partitionnement h!bride. Les donnes sont d0abord partitionnes b! range. /nsuite% chaque partition sera sous<partitionne soit b! hash ou b! list. 2l n0est pas ncessaire d0avoir e#actement le m&me nombre de sous<partitions par partition ' par e#emple% une partition peut &tre constitue de F sous<partitions alors qu0une autre sera compose de G sous< partitions.

Le mcanisme de dcoupage logique peut &tre tendu sur plusieurs champs% ainsi que sur deu# niveau#. *n parle dans ce cas de sous< partitionnement.

(HIJ/ 4 3HS3 +Ki(HIJ/ 4 L2ST +5i(HIJ/ 4 (HIJ/ +66gL2ST 4 (HIJ/ +66gL2ST 4 3HS3 +66g-

/. Partitionnement local o" *lo(al


2l e#iste deu# faLons de partitionner un inde# sous *racle '

ORACLE : PARTITIONNEMENT & PERFORMANCE

Page 7 sur 7

Locall! partitioned inde# ' pour chaque partition de table cre% il ! a une +et une seule- partition d0inde#. Les donnes dans chaque partition d0inde# pointent sur l0ensemble des donnes d0une et unique partition de table. Logiquement% si la table a I partitions% l0inde# aura galement I partitions

Jloball!

partitioned

inde#

'

l0inde#

est

partitionn

indpendamment de la table. :ne partition d0inde# peut pointer sur des donnes dans une ou plusieurs partitions de table. :n inde# globalement partitionn ne peut &tre que partitionn b! range. Les inde#es sur des tables partitionnes sont% par dfaut% des inde#es globau# sur une seule partition +en effet% par dfaut% ils ne sont pas partitionns-.