IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Grosse lenteur sur requête UPDATE/DELETE d'une table et NON sur SELECT/INSERT


Sujet :

PL/SQL Oracle

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Grosse lenteur sur requête UPDATE/DELETE d'une table et NON sur SELECT/INSERT
    Bonjour,

    Depuis aujourd'hui, je constate une grosse lenteur sur les UPDATE/DELETE d'une table de bases de données.
    En effet, si je fais un simple SELECT c'est assez rapide dans les norme. Mais quand je fais un DELETE ou une UPDATE sur cette ligne que je viens de SELECTionner, l'execution de la requête est catastrophique (prend plusieures minutes). Je précise que la base en est cours de production. Et que d'après les constatations un INSERT est assez rapide aussi dans les norme. Pour remarque, cet incident n'arrive qu'à une table specifique. Sauriez-vous d'où peut provenir le problème ? Ce problème n'apparait qu'aujourd'hui.
    Mais même si je fait un DELETE FROM table WHERE clé_primaire = "1_tuple" cela me fait toujours un temps considérable d'execution (plusieurs minutes).
    Je crois que c'est peut être du au verrou poser sur la table ?? Puisque la base est en prod. Mais pourquoi auparavant n'apparaissait pas ce problème ?? Ou peut être un problème d'écriture sur disque ? Mais pourquoi, les opérations DE SELECT et INSERT ne sont pas inpactées ? Aviez-vous une explication concrète qui pourrait résoudre ceci ?
    Par ailleurs, sauriez vous comment voir le statut d'une requête executée en live ? C'est à dire si elle est blockée ? Si oui par qui ? Comment fait on pour annuler la requête blocante ? Comment fait on pour déverouiller un objet, car je constate également que la compilation d'une procédure se rapportant à cette table specifique est verouillée jusqu'à liberation de ce verrou.

    Esperons que vous pouvez apporter des réponses à ce sujet ?

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Points : 18 395
    Points
    18 395
    Par défaut
    Sans ordre particulier :
    Vérifiez que l'ensemble des colonnes sur lequel vous faites la mise à jour / suppression est correctement indexé : si vous faites un delete from where col1 = 'A' and col2 = 'B', le meilleur index est (col1, col2), pas un index sur col1 et un autre sur col2.
    Regardez le nombre d'index que possède la table : si vous avez 25 index à mettre à jour pour une suppression, ça prend un peu de temps.
    Regardez si votre table possède des déclencheurs : il peut y avoir des traitements qui se déclenchent, il faut regarder lesquels.
    Vérifiez que vous n'avez pas de liste chaînées : cela devrait aussi impacter le select j'imagine, mais autant vous fournir le maximum de pistes, c'est toutefois la moins probable.

    Analyser également vos plans d'exécutions réels, autotrace et trace complète.

    Pour tout ce qui est monitoring, regardez du côté d'Oracle Enterprise Manager, mais la 8i n'étant plus supportée depuis très longtemps vous allez probablement souffrir à trouver les sources d'une version compatible.
    Sinon il doit bien y avoir quelques options du côté de SQL Developer, avec les mêmes problématiques de version.

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2017
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Surtout il faut chercher des indexes crées sur la table récemment .

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Non, j'ai pas créé d'index recemment.
    C'est dingue car le phénomène n'apparaissait que ce lundi. J'ai testé lundi soir, et çà avait l'air de repartir. Maintenant les vitesses d'executions des update et delete redeviennent à la normale. Je soubçonne l'attente de verrous d'en être la cause, à votre avis ?
    Dommage, j'ai pas de requête pour suivre ces attentes de verrou, afin de savoir qui bloque qui.
    Merci de votre aide

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849

  6. #6
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 004
    Points : 2 507
    Points
    2 507
    Par défaut
    Lors du DELETE, peut-être que des SELECT sont faits dans les tables ayant une Foreign Key sur la table délétée, non?
    Idem pour l'update : si tu updates COL1 et qu'il y a des FK dessus, cet Update peut être refusé par Oracle mais pour ça il doit faire des SELECT dans les tables filles.

  7. #7
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Tracez (trace SQL étendue) l'exécution de la requête sous sqlplus puis analysez la trace pour comprendre ce qui se passe.

Discussions similaires

  1. Requête update à partir d'une autre table
    Par amiral thrawn dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/02/2024, 12h40
  2. Réponses: 5
    Dernier message: 26/03/2011, 19h29
  3. Besoin d'aide sur requête update
    Par fardon57 dans le forum SQL
    Réponses: 0
    Dernier message: 17/12/2008, 13h53
  4. PB Lock sur delete dans une table
    Par greatmaster1971 dans le forum DB2
    Réponses: 10
    Dernier message: 06/07/2008, 21h49
  5. Réponses: 1
    Dernier message: 02/01/2008, 14h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo