Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Installation
Installation Forum d'entraide sur les problèmes liés à l'installation de MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/05/2006, 11h34   #1
Membre éclairé
 
Inscription : novembre 2005
Messages : 385
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 385
Points : 362
Points : 362
Par défaut bug nombre d'enregistrements

Pour la réalisation d'une application web, j'ai crée une base MySQL. J'ai crée un script PHP permettant d'intégrer les données déjà existantes. Lorsque j'insère un grand nombre données, MySQL me retourne un nombre total d'enregistrements différents à chaque rafraichissement de la page.

Par exemple, j'ai inséré 84 196 enregistrements dans une table, MySQL m'indique un volume de 84 310 puis 83 890, ...

Autre question : lorsque j'insère un grand nombre de données est-il préférable d'écrire une seule requête de type :

Code :
1
2
3
4
 
INSERT INTO maTable
(champ1, ..., champ N)
VALUES (value1, ..., value N), (value1, ..., value N), ...
ou une requête insert par enregistrement.

Je suppose que la première solution est la meilleure vu que l'on effectue qu'un seul accès à la base.

merci à vous !
erwan.bodere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 13h29   #2
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
la première solution est en effet préférable, cependant, attention, si jamais une de tes insertions provoque une erreur, les suivantes ne seront pas faites !
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 13h30   #3
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Bonjour,

Si tu utilises PHPMyAdmin c'est potentiellement "normal".
D'autres ont eu le même problème : http://www.developpez.net/forums/sho...nts+PHPMyAdmin

Sinon la première solution est effectivement préférable
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 13h49   #4
Membre éclairé
 
Inscription : novembre 2005
Messages : 385
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 385
Points : 362
Points : 362
merci pour vos réponses.

Il est donc [anormalement] normal que le nombre d'enregistrements varient lors des rafraichissements. Dommage que le lien que tu m'as donné ne fourni aucune explication concernant ce bug.

Ci quelqu'un sait comment résoudre ce problème ça m'intéresse car c'est très génant ce bug surtout que l'application que je dois développer doit générer des statistiques. Or si les résultats sont jamais les mêmes ce n'est pas très sérieux.

J'ai deux questions :
  • Faut-il limiter le nombre d'insertions simultanées via le script d'intégration ?
  • Faut-il changer de SGBD ?
erwan.bodere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 13h54   #5
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Je parlais uniquement de PHPMyAdmin... Vérifie bien que via un COUNT dans une requête ça fonctionne bien.

Un CHECK TABLE pourrait aussi aider à tenir les statistiques à jour.
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 13h56   #6
Membre éclairé
 
Inscription : novembre 2005
Messages : 385
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 385
Points : 362
Points : 362
En faisant un COUNT(*) sur la table concernée, les résultats varient aussi. Je vais essayer ta solution CHECK TABLE .
erwan.bodere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 14h03   #7
Membre éclairé
 
Inscription : novembre 2005
Messages : 385
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 385
Points : 362
Points : 362
J'ai vérifiée les tables via l'instruction CHECK TABLE.

Voici un des résultats :
Code :
1
2
3
4
5
<ul><li>crivente.tmp_releves_acheteurs</li>
<li>check</li>
<li>status</li>
<li>OK</li>
</ul>
Tout est normal d'après le résultat.

Comme j'ai une dizaine de tables et environ 70 fichiers de plusieurs milliers d'enregistrements à intégrer, j'ai effectué différents tests et il semblerait que le bug provient lorsque j'intégre des fichiers trop volumineux.

Je vais donc tester les intégrations en scindant chaque fichier en plusieurs fichiers. Je vous tiendrez au courant des résultats.
erwan.bodere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 14h11   #8
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Citation:
Envoyé par erwan.bodere
En faisant un COUNT(*) sur la table concernée, les résultats varient aussi.
Dans quel environnement ? En ligne de commande ? Désolé d'insister mais apparemment pas mal de clients MySQL ont le même pb que PHPMyAdmin...
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 14h20   #9
Membre éclairé
 
Inscription : novembre 2005
Messages : 385
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 385
Points : 362
Points : 362
J'utilise un poste de travail sous win 2000, le serveur et sous win (2000 je pense). J'ai installé Wamp5 sur ce serveur donc apache et phpMyAdmin 2.7.0-pl2

J'exécute un script Php5 via IE6. Je n'ai pas essayé en mode commande car je ne sais pas comment faire (je n'ai pas cherché ).
Je viens encore d'essayer avec un fichier de 50 000 enregistrements mais ca bug toujours. Ca passe avec des fichiers de 20000 enregistrements.

De plus si j'intègre plusieurs fichiers, avec seulement 1 de gros volume, l'intégration des autres fichiers bugs. Pour info, dans mon exemple les fichiers concernent des tables différentes.
erwan.bodere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 14h29   #10
Membre éclairé
 
Inscription : novembre 2005
Messages : 385
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 385
Points : 362
Points : 362
Dans le cadre du projet que je dois réaliser, j'ai données existantes dans des 7 bases Access. J'exporte les données dans des fichiers CSV et les intègre via un script PHP dans la base MySQL. J'utilise un script PHP car il servira pour les futures intégrations journalières et pour filtrer les champs.

J'ai effectué plusieurs tests avec une table de plus de 50 000 enregistrements:
  • 50 000 : bug
  • 25 000 : bug
  • < 20 000 : ne bug pas
erwan.bodere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2006, 14h44   #11
Membre éclairé
 
Inscription : novembre 2005
Messages : 385
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 385
Points : 362
Points : 362
Encore mieux, si j'intègre le fameux fichier de 50000 enregistrements ça bug, tandis que si j'intègre ces 50000 enregistrements dans 3 fichiers différents dans le même script PHP il n'y a pas de bug.

Donc voici la solution au problème, après unqiuement un test donc c'est à voir par la suite :
Code :
1
2
3
 
scinder les fichiers sources en plusieurs fichiers d'un volume 
de 20 000 enregistrements maximum et intègrer ces fichiers
Cette solution n'est peut-être pas idéale mais elle a le mérite de fonctionner (pour le moment).

Désolé pour le monologue ...
erwan.bodere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2006, 15h04   #12
Membre éclairé
 
Inscription : novembre 2005
Messages : 385
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 385
Points : 362
Points : 362
Finallement, après plusieurs tests je me suis rendu compte que lorqu'on ajoute une grand nombre de données avec une requête par enregistrement, l'insertion effective dans la base de données prend plusieurs minutes.

En effet lorsque j'intègre un fichier de 400 000 enregistrements, la requête COUNT(*) m'affiche au départ à 30 000, puis au bout de 2-3 minutes je réeffectue une requête COUNT(*) et le résultat m'indique un nombre d'enregistrement de 100 000, ... jusqu'à atteindre les 400 000 enregistrements escomptés.

Par contre le bug d'affichage concernant le nombre d'enregistrement de la table via l'onglet affichage persiste contrairement à l'exécution de la requête COUNT(*).

Donc la solution réelle est la patiente.
erwan.bodere est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h42.


 
 
 
 
Partenaires

Hébergement Web