#Added to reduce memory used (minimum is 400) table_definition_cache = 600Dans votre fichier de configuration d'accès à MySQL, remplacez l'hôte localhost par 127.0.0.1
Comment peut-on être certain que ton problème ne vient pas de ta requête ou de ta base de données si tu ne nous communique pas le descriptif de ta table ni celui de ta requête ?Citation
Concernant la requête, je ne pense pas qu'elle soit en cause.
Citation
Artemus24
Dans l'ancienne version de Wamp, le temps d'exécution était-il aussi long que maintenant ou pas ?
Citation
Artemus24
Peux-tu nous donner un export de ta table, sans les insert bien sûr ?
Citation
Alti
comme je le disais, je fais un select * from matable
$sql = "SELECT * FROM matable";
$query = $bdd->prepare($sql);
$query->execute();
$query->closeCursor(); // pour "fermer" la requete
Citation
Je ne peux te dire précisément si, dans l'ancienne version de wamp, j'avais des problèmes avec la même requête; car je n'avais pas encore chargé cette table.
Mais je faisais régulièrement le même type d'opération (peut être avec un tout petit peu moins de volumétrie) et je n'avais pas de problème.
Citation
Ensuite, j'ai plusieurs bases sur mon serveur afin de séparer mes projets si c'est ce que tu entends comme partitionnement ?
Une table subit des insertions et des suppressions.Citation
Quand à la désorganisation de ma base, qu'entends tu par là ?
Je comprends tout à fait cette réflexion car tu es dans une démarche fonctionnelle et non de performance. Sauf qu'aujourd'hui, tu ne peux pas obtenir ton résultat à cause de ce problème d'espace mémoire.Citation
Pour le découpement du traitement, la question peut effectivement se poser, mais pour moi, là n'est pas le point;
Ta table est gigantesque et en faisant un 'select *', tu demandes que la totalité de ta table soit en mémoire !Citation
je ne comprends pas que je ne puisse pas faire un select * avec écriture dans un fichier sans que ca plante.
C'est une solution, mais le mieux est de faire un export par phpmyadmin qui est bien plus propre.Citation
Et que si j'avais voulu faire un simple export de la table, il me suffisait de faire un select * from matable into outfile ...
Je te remercie du questionnement, mais, justment, si j'ai importé en local cette table c'était pour faire de la comparaison/dédup avec une autre table car il y a des incohérences dans les données (données manquantes principalement)Citation
Donc c'est bien un problème de volumétrie.
Une idée qui me vient à l'esprit en écrivant ces quelques lignes.
Est-ce que ta table doit obligatoirement nécessité un balayage de toutes tes lignes ?
Autrement dit, est-ce que tu n'as pas déjà traité certaines lignes, qui n'ont subit aucune modification dans un traitement précédent ?
Il faudrait faire une distinction entre ce qui a déjà été traité, de ce qui ne l'a pas encore été.
Un flag pourrait faire servir à faire cette distinction.
Quand le dernier traitement est terminée, tu mets ce flag à 'fait'. Lorsqu'une insertion ou une mise à jour est faite, ce flag est mis à 'non traité'.
Tu crées un index uniquement sur ce flag, tu bien sûr, tu ne traites que ces lignes. Cela va te faire gagner du temps.
Je n'ai fait aucune modification sur la table, puisque je l'ai chargée juste avant, donc, normalement, elle ne doit pas être désorganisée.Citation
Une table subit des insertions et des suppressions.
De plus tu utilises des varchar qui peuvent subir des changements de longueurs.
Ainsi quand tu modifies ta table, il se peut que l'espace d'occupation vient à manquer et de ce fait, une ligne soit à cheval sur des pistes qui ne sont pas contigües.
Cela rallonge le temps de traitement car tu es obligé de déplacer la tête lecture plus fréquemment que la normale.
Je suis un peu étonné justement que je ne puisse mettre en mémoire une table de 400megas, d'autre part, le problème n'est pas necessairement le process mysql mais bien le httpd qui grossit énormément.Citation
Ta table est gigantesque et en faisant un 'select *', tu demandes que la totalité de ta table soit en mémoire !
J'entends pas mémoire, une partie de ta ram qui est réservée au fonctionnement de ton traitement.
Et comme tu n'as pas assez d'espace, Windows, vient écrire dans la partie que l'on nomme 'pagefile.sys'.
Donc comment faire entrer plusieurs mega, disons une bonne centaine dans 8 mega ?
Tu peux augmenter cette taille mais pas indéfiniment. Et du coup, tu as un manque d'espace mémoire, et le traitement plante.
Citation
J'ai réussi à atteindre l'objectif voulut, donc, encore une fois, mon traitement n'est plus d'actualité.