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

Requêtes MySQL Discussion :

[Delete] Successions de delete qui ne se font pas


Sujet :

Requêtes MySQL

  1. #1
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut [Delete] Successions de delete qui ne se font pas
    Bonjour

    Dans un Javabean, j'ai une méthode assez complexe qui effectue le nettoyage de tables en fonction de certains critères. En pratique, cela donne une suite de requêtes delete.
    Voici l'extrait en question de la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    			DatabaseConnector dc = new DatabaseConnector();
    			dc.connect();
    			String request = "select num_primer from Primers_Blast_scores where identity_score>"+score;
    			ResultSet rs = dc.select(request);
    			while(rs.next()){
    				long numprimer = rs.getLong(1);
    				request = "delete from Primers_Blast_scores where num_primer="+numprimer;
    				dc.delete(request);
    				request = "select num_amplicon from Primers where num_primer="+numprimer;
    				java.sql.ResultSet rs2 = dc.select(request);
    				while(rs2.next()){
    					long numamplicon = rs2.getLong(1);
    					request = "delete from amplicons where num_amplicon="+numamplicon+" and id_job='"+id_job+"'";
    					dc.delete(request);
    					request = "delete from amplicons_Blast_scores where num_amplicon="+numamplicon;
    					dc.delete(request);
    				}
    				request = "delete from Primers where num_primer="+numprimer;
    				dc.delete(request);
    			}
    			dc.close();
    Seul problème : j'ai des incohérences et mes deletes ne se font pas totalement.
    Comment s'assurer ainsi que MySQL a bien fini l'exécution de sa requête ? Je suis sous MySQL 3.23.58.

    Merci d'avance.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  2. #2
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Salut

    Je remarque que j'ai beaucoup de données "overhead" !
    Faut-il que je ralentisse les accès vers ma base ?

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  3. #3
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Salut,

    Bizarre, ça semble vouloir dire que tes ordres SQL ne sont pas atomiques... C'est des tables MyISAM ou InnoDB ?
    Pensez au bouton

  4. #4
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Salut Maximilian

    Ce sont des tables MyISAM. Je précise que je ne peux changer le format de mes tables ni la version de MySQL
    Merci de ton aide.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  5. #5
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    OK, avec MyISAM un DELETE est censé placer un verrou en écriture sur la table jusqu'à ce qu'il se termine, donc ce genre de problème ne devrait pas avoir lieu
    Pris individuellement, chaque DELETE est long a exécuter ?
    Tu parles d'incohérences, ce sont des lignes qui auraient dû être supprimées mais qui ne le sont pas ?
    Pensez au bouton

  6. #6
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    En effet, des lignes qui devraient être supprimées ne le sont pas.
    Comme tu le vois, j'utilise des requêtes vraiment simples et je ne vois pas pourquoi j'ai des overheads ainsi que ces fameuses incohérences.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  7. #7
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    En revanche ce qui peut se passer c'est des modifications dues à d'autres utilisateurs qui viennent s'intercaler entre les requêtes de ton script.
    Pour éviter ça seules les transactions (moteur InnoDB) peuvent t'aider, ou bien un LOCK TABLES au début du script, ce qui est concevable si le script n'est pas souvent exécuté (mais pénalisateur en termes de performances dans le cas contraire).
    Pensez au bouton

  8. #8
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Salut Maximilian

    Le problème est que je suis sur la machine de test (ce n'est pas encore en prod') et donc le seul user.
    Peut être que le lock table pourrait m'aider. Je vais voir ça.
    Merci en tout cas de ton aide.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  9. #9
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Ah oui du coup ça change tout... là je vois plus trop. Sinon individuellement les DELETE marchent bien ?
    Pensez au bouton

  10. #10
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Hélas, 100 fois hélas, oui, ils fonctionnent.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. .Net + Oracle : DELETE qui n'en fini pas
    Par Sergejack dans le forum Administration
    Réponses: 4
    Dernier message: 26/01/2012, 17h37
  2. Delete avec sous requetes qui retourne plusieurs resultats
    Par Biosox dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/07/2010, 14h55
  3. Delete d'un GridView qui delete pas, enfin, presque
    Par zooffy dans le forum ASP.NET
    Réponses: 4
    Dernier message: 19/09/2008, 09h51
  4. [Debutant] repaint() qui ne se font plus
    Par Syrus dans le forum 2D
    Réponses: 4
    Dernier message: 12/01/2007, 11h07
  5. Onglets qui n'en font qu'à leur tête !
    Par bitou11 dans le forum Access
    Réponses: 2
    Dernier message: 01/08/2006, 16h45

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