limites de mysql

limites de mysql - SQL/NoSQL - Programmation

Marsh Posté le 15-05-2002 à 10:28:20    

hello,
dites-moi es-ce que quelqu'un sait si les tables mysql ont des limites en termes de capacité...
j'ai des tables qui contiennent 600000 enregistrements et ca rame furieusement!!
 :gun:


---------------
boulet officiel:goueg
Reply

Marsh Posté le 15-05-2002 à 10:28:20   

Reply

Marsh Posté le 15-05-2002 à 10:33:18    

Ce forum tourne sous MySQL et y a des tables avec des millions d'enregistrement (notemment la table des messages)... donc à priori c'est pas une limite de MySQL, mais plutôt une question d'optimisation je suppose.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 15-05-2002 à 10:34:42    

en clair, si ca rame c vot' faute :D
au boulot! [:xp1700]

Reply

Marsh Posté le 15-05-2002 à 10:36:23    

c'est bien ce que je pensais...
le meilleur moyen d'optimiser ce sont les index n'es-ce pas?
es-ce que l'utilisation d'index est efficace avec mysql??
 :benetton:


---------------
boulet officiel:goueg
Reply

Marsh Posté le 15-05-2002 à 10:36:45    

Faut aussi voir comment tu fais tes requêtes ;)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 15-05-2002 à 10:48:15    

les requête y a pas 36 facons de les faires je fais un select sur tous les enregistrements de ma table et pour chaque enregistrement récuperé je fait une jointure sur une autre table pour récupérer les informations qui m'intéressent ...
excuse j'ai oublié de préciser que c'était dans du code php!!
 
$global=mysql_query("select * from matable1 ",$connexion);
while($resultat=mysql_fetch_object($global))
{
 $cle=$resultat->cle;
 $req=mysql_query("select acrd_radio,acrg_radio from  
radios where no_invitation = $inv_ref_g",$connexion);
  $res_acr=mysql_fetch_object($req);


---------------
boulet officiel:goueg
Reply

Marsh Posté le 15-05-2002 à 10:53:50    

les requête y a pas 36 facons de les faires je fais un select sur tous les enregistrements de ma table et pour chaque enregistrement récuperé je fait une jointure sur une autre table pour récupérer les informations qui m'intéressent ...
excuse j'ai oublié de préciser que c'était dans du code php!!
 
$global=mysql_query("select * from matable1 where moncritere",$connexion);
while($resultat=mysql_fetch_object($global))
{
 $cle=$resultat->cle;
 $req=mysql_query("select info1,info2 from  
        matable2 where identifiant = $cle",$connexion);
  $rest=mysql_fetch_object($req);
         echo "$rest->info1";
         echo "$rest ->info2";
}
 
resultat: fatal error maximum time 30 sec excedeed...


---------------
boulet officiel:goueg
Reply

Marsh Posté le 15-05-2002 à 11:12:05    

:ouch: je comprends que ça rame... Ptêtre qu'avec une vraie jointure ça irait mieux :D
 
select info1,info2 from matable1, matable2 where (moncritere) and (identifiant=cle)
 
un truc dans ce genre sera infiniment plus rapide que de faire une requêtre en boucle
 
ici tu fais simplement une boucle sur le résultat de ça, pour récupérer tous tes info1/info2, et donc tu as une requête au lieu de 600 000...
 
ps: si jamais des champs ont le même nom dans les deux tables tu dois faire par ex select matable2.info1, etc...

 

[jfdsdjhfuetppo]--Message édité par antp le 15-05-2002 à 11:13:45--[/jfdsdjhfuetppo]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 15-05-2002 à 11:15:27    

:hello: farid.
 
antp a raison et en plus on a appris comme ca à l'iut.
 
tu n'a pas suivi les cours serieusement :non:

Reply

Marsh Posté le 15-05-2002 à 11:33:45    

c'est pas une mauvise idée...
je vais tenter le coup!!
mr_mat je vais passer chez toi je pense demain
@+


---------------
boulet officiel:goueg
Reply

Marsh Posté le 15-05-2002 à 11:33:45   

Reply

Marsh Posté le 15-05-2002 à 11:58:21    

fafe a écrit a écrit :

 
mr_mat je vais passer chez toi je pense demain
@+  



ok pas de pb

Reply

Marsh Posté le 15-05-2002 à 12:23:32    

faut peut-être penser à l'optimiser aussi;)
dupliquer les attributs, attributs calculés, ...
 
ex : stocker le nom du posteur en plus de son id dans la table post, histoire de ne pas devoir faire une jointure avec la table user puisque qd on affiche un post on affiche aussi le nom du posteur.

Reply

Marsh Posté le 17-05-2002 à 15:25:05    

Hum moi je cherches aussi à optimiser un script em l'occurence, mon forum dont la page principale met 700 à 1000 ms à être généré. (URL : http://www.lanstadium.fr.st/forum)
J'ai fait des tests sur des requêtes avec la présence ou non d'index sur certains attributs de ma table : ya un cas, la traitement est passé de 25ms à 7ms avec l'utilisation d'index.
Sinon question, vaut il mieux utiliser mysql_query() ou mysql_unbuffered_query() pour aacéler le traitement?

Reply

Marsh Posté le 17-05-2002 à 18:08:29    

up

Reply

Marsh Posté le 22-05-2002 à 10:18:00    

Salut :)
 
moi aussi je suis à la recherche d'infos :)
 
j'ai bien trouvé la taille max des tables, etc, dans la dac mysql.... on constate que les forums ici ont bcp d'enregsitrements, mais y-a-t-il un nombre limite d'enregsitrements au-delà duquel un nouvel enregsitrement refuse de s'insérer ?
 
j'ai besoin de ces infos pour fair eun doc pour le boulot ;-)
 
merci à vous les coquinous ;-)))
Elcap

Reply

Marsh Posté le 22-05-2002 à 11:25:42    

ça dépend de la taille de ta clé (id numérique, char, ou clé composée) comme sur tout le sgbd me semble-t'il.
si tu prends un bigint unsigned, tu est parti pour 18 446 744 073 709 551 615 enregistrements...


---------------
...oups kernel error...
Reply

Marsh Posté le 22-05-2002 à 11:32:55    

La seule limite dont j'ai entendu parler c'est la taille des fichiers. Donc comme sur la plus part des OS pour PC ( à ma connaissance en tout cas) on est limité à des fichiers de 4Go à toi de faire tes petits calculs :)


---------------
Le Tyran
Reply

Marsh Posté le 22-05-2002 à 11:35:41    

En NTFS (sous NT4/2000/XP) on n'est pas limité à 4 Go
Idem pour Linux (enfin ça dépend des file systems j'imagine, mais il me semble que ext2 y a pas cette limite si basse)

 

[jfdsdjhfuetppo]--Message édité par antp le 22-05-2002 à 11:35:55--[/jfdsdjhfuetppo]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 22-05-2002 à 12:33:53    

ok, merci pour l'info :)
 
en voici une concernant la taille des tables :)
 
http://www.mysql.com/doc/T/a/Table_size.html
 
Elcap :)

Reply

Marsh Posté le 22-05-2002 à 12:36:35    

8 million terabytes :ouch:  
he bhe on a le temps de voir venir :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 25-05-2002 à 15:54:20    

tu m'étonnes :D
la les partitions sont en reiserfs donc le dur sera plein avant d'avoir atteint la limite de taille du FS :D

 

[jfdsdjhfuetppo]--Message édité par joce le 25-05-2002 à 15:54:43--[/jfdsdjhfuetppo]


---------------
Protèges carnets personnalisés & accessoires pour bébé
Reply

Marsh Posté le 31-05-2002 à 00:21:42    

J'ai fait des tests dans ma boite de montée en charge de tables mysql (on a pres de 300 000 inscrits dans notre base); je suis monté a 4 000 000 d'enregistrements sur une table consommateur, et la ca ramait un peu (qques secondes pour récupérer toutes les infos d'un consommateur); en rajoutant des index sur les bons champs (style pseudo, email ou autre champ très sollicité dans les clauses "WHERE" ), c'etait instantané, meme pas une demi seconde, donc les index sont tres utiles mais a mon avis tu as encore de la marge, car mysql est tres rapide.
 
Mais comme dis antp, ta facon de faire des requetes est  :eek2:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed