|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : novembre 2012 Messages : 70 ![]() |
Comment peut-on vérifier et valider le stockage d'une table ?
1/ Structure : PCTFREE ...quelle valeur ? PCTUSED ...quelle valeur ? Autre ...? 2/ Stockage des données Défragmentation ? L'organisation des blocks de la table ? trous ? Autrement dit qu'elles sont les Checks à passer pour vérifier de la "bonne santée" d'une table et de ses données. merci pour votre aide précieuse !
|
|
|
00
|
|
|
#2 |
|
Invité régulier
![]() Inscription : novembre 2012 Messages : 70 ![]() |
Salut ,
Cette semaine un collègue a plombé les perfs en positionnant PCTFREE = 0 dans une table principale !!! Morale : Faire attention à ces paramètres de table / index , voir éviter de les modifier ... merci |
|
|
00
|
|
|
#3 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 12 085 ![]() |
Le principe de PCTFREE (ou FILLFACTOR dans d'autres SGBDR) est de réserver de l'espace afin d'éviter la fragmentation.
Donc le bon réglage consiste à trouver la valeur de ce paramètre de telle sorte que au moment de la phase de maintenance des index, vous soyez à la limite d'un début de fragmentation. Par exemple si votre table "grossit" de 1% par heure et que vous avez mis en place une maintenance d'index journalière, alors un PCTFREE de 25% parait suffisant (personnellement je prendrais un peu de marge donc 30%) En général le PCTFREE évolue en fonction de la vieillesse de la BD. En effet, au début de sa vie la BD nécessite un fort PCTFREE, mais après quelques années d'exploitation, peut être baissé de manière très sensible. Explication : le taux de mise à jour est relativement constant, alors que le volume augmente. Exemple :
Par exemple ceci est valable si la dispersion des nouvelles données est uniforme. Si par exemple il s'agit d'un index sur une clef auto-incrémentée, alors le PCTFREE peut être de 0, de même pour un index contenant un horodatage. Lisez le chapitre consacré aux index de la dernière édition de mon bouquin sur SQL. A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
14
|
|
|
#4 | |||
|
Membre chevronné
![]() François Inscription : février 2010 Messages : 395 ![]() |
Citation:
http://docs.oracle.com/cd/E11882_01/...l.htm#autoId13 Moi ce que je comprends, c'est que le PCTFREE s'applique à chaque bloc de donnée, et non pas à la table. ![]() Citation:
![]() Citation:
|
|||
|
|
00
|
|
|
#5 | |
|
Expert Confirmé
![]() ![]() Franck PachotConsultant DBA en Suisse (Trivadis SA) Inscription : novembre 2007 Messages : 995 ![]() |
Bonjour,
Citation:
Car des paramétrages bons dans un cas d'utilisation sont mauvais dans un autre. Par exemple, PCTFREE=0 sur les tables est très bon sur des tables qui n'ont - pas d'updates qui font grossir les lignes - et qui n'ont pas de modifications concurrentes Et par contre très mauvais lorsque une ligne va grossir et qu'on voudra y accéder via index: elle va migrer et on aura besoin de lire un bloc de plus lorsqu'on va y accéder via index. Tout dépends comment les données sont accédées, sont modifiées, etc. Donc le seule check possible (à mon avis) c'est de vérifier que les temps de réponse correspondent aux spécifications. Et lorsque ce n'est pas le cas, tuning (plan d'exécution, statistiques Statspack/AWR, etc) pour voir d'où vient le problème. SQLpro, désolé mais il y a une grosse confusion dans votre réponse. Sur les tables PCTFREE détermine le taux de remplissage des blocs par des inserts. Pour les index, il détermine le taux de remplissage uniquement lors de la création (ou du rebuild) de l'index, pour éviter trop de splits de blocs lors des premières modifications. Cordialement, Franck.
__________________
A lire sur mon blog Oracle - Articles d'Experts des articles traduits en français de Jonathan Lewis, Tom Kyte, Doug Burns, Cary Millsap, Greg Rahn ...
|
|
|
10
|
|
|
#6 |
|
Membre confirmé
![]() Ahmed AANGOURDBA Etudes Oracle Inscription : janvier 2010 Messages : 134 ![]() |
@Frederic
Il est dangereux de vouloir appliquer les concepts SQL server à Oracle. Ils ont des choses en commun mais sur beaucoup de choses ils sont très différents (authetification,optimiseur,locks,transactions,journaux,stockage,sécurité etc.)
__________________
Mon blog Oracle: http://ahmedaangour.blogspot.com/ |
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : novembre 2012 Messages : 70 ![]() |
Merci Franck ,
J'ai bien compris l'utilité de PCTFREE. Est-ce la même logique pour PCTUSED et INITRANS ? Faut-il vérifier ces 2 paramètres aussi ? merci |
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() ![]() Franck PachotConsultant DBA en Suisse (Trivadis SA) Inscription : novembre 2007 Messages : 995 ![]() |
Bonjour,
PCTUSED correspond à la même logique pour une table: quand on dépasse PCTFREE, on ne fait plus d'insert pour garder de la place en cas d'update. Mais si les lignes diminuent (update ou delete) on se remet à accepter les insert si on descend au dessous de PCTUSED. Sauf qu'en Autmatic Segment Space Management, PCTUSED est ignoré, la gestion se fait automatiquement en fonction du remplissage des blocs. INITTRANS est un peu lié. on a parlé de réserver de la place pour les update qui font grossir les lignes. Il faut aussi avoir de la place pour les informations de transaction (ITL). INITRANS permet de réserver de la place pour un certain nombre de transaction par bloc. Au delà, c'est en fonction de l'espace disponible (réservé par PCTFREE) et s'il n'y a plus de place pour une nouvelle entrée de transaction, elle attendra (enq: TX - allocate ITL entry) Pour les En ASSM, PCTUSED est ignoré, INITRANS et probablement ok à sa valeur par défaut. On utilise PCTFREE pour garder de la place aussi bien pour agrandir les lignes que pour les ITL de transactions concurrentes. Cordialement, Franck.
__________________
A lire sur mon blog Oracle - Articles d'Experts des articles traduits en français de Jonathan Lewis, Tom Kyte, Doug Burns, Cary Millsap, Greg Rahn ...
|
|
40
|
|
|
#9 |
|
Expert Confirmé Sénior
![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 4 114 ![]() |
|
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() ![]() Franck PachotConsultant DBA en Suisse (Trivadis SA) Inscription : novembre 2007 Messages : 995 ![]() |
__________________
A lire sur mon blog Oracle - Articles d'Experts des articles traduits en français de Jonathan Lewis, Tom Kyte, Doug Burns, Cary Millsap, Greg Rahn ...
|
|
00
|
|
|
#11 | |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 12 085 ![]() |
Citation:
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
|
01
|
|
|
#12 | |
|
Expert Confirmé
![]() ![]() Franck PachotConsultant DBA en Suisse (Trivadis SA) Inscription : novembre 2007 Messages : 995 ![]() |
@SQLpro
Non, Le PCTFREE gouverne le remplissage par les INSERT. Pour prévoir la taille que prendront les enregistrement au bout de toutes leurs modifications. Ça ne change pas avec le vieillissement. Citation:
Cordialement, Franck.
__________________
A lire sur mon blog Oracle - Articles d'Experts des articles traduits en français de Jonathan Lewis, Tom Kyte, Doug Burns, Cary Millsap, Greg Rahn ...
|
|
|
10
|
|
|
#13 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 12 085 ![]() |
Vous m'avez mal compris. Lorsque je dit que le PCTFree évolue en fonction de la vieillesse de la BD, je veut dire que compte tenu que le volume de transaction est souvent constant dans le temps, mais que le volume des données augmente il est sage de prévoir un PCTFREE imoprtant à la naissance et de plus en plus petit au fur et à mesure du vieillissement de la base.
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
02
|
|
|
#14 | ||||||||
|
Membre chevronné
![]() François Inscription : février 2010 Messages : 395 ![]() |
Malheureusement, soit vous n'avez pas compris, soit c'est très mal dit.
Pour suivre votre exemple de nombre de transactions constantes: Si tous les jours j'insère des blocks de données, et que je sais que je vais faire des updates sur ces champs, je vais mettre le PCTFREE qui va bien, de manière à ce qu'oracle alloue le nombre final de blocks de données requis dès la création. Si la BdD s'amuse a allouer des blocks pendant les updates, ben ça va augmenter les temps des réponses des updates pour rien. Et ceci, ça ne dépend en rien de l'ancienneté de la base, mais seulement des opérations qu'on va faire sur les blocks nouvellement créés. Code :
Par rapport à l'espace total requis par tuple, au début on utilise seulement 20%. Donc on va mettre un PCTFREE de 80% pour avoir le bon nombre de blocks dès le début. Code :
Code :
Code :
|
||||||||
|
|
10
|
Copyright © 2000-2013 - www.developpez.com