Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

MYSQL 4.1 MyIsam/Innodb performance

3 réponses
Avatar
Daniel
Bonjour,

je suis entrain de faire quelques tests de charge sur une de mes
bases.

J'ai remarqu=E9 que un select count(*) from base sur une base en innodb
est proportionnel =E0 la taille de la table.

C'est =E0 dire qu'en MyIsam sur une table de 10 Millions
d'enregistrements, c'est quasi imm=E9diat(0.00sec), parcontre sur une
table innodb c'est de l'ordre de plusiueurs secondes.

Est ce que quelqu'un peut confirmer ma remarque, et si oui avez
vous une id=E9e de cette diff=E9rence?

Merci
--=20
suivre ce lien pour r=E9pondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)

3 réponses

Avatar
see
Daniel wrote:

C'est à dire qu'en MyIsam sur une table de 10 Millions
d'enregistrements, c'est quasi immédiat(0.00sec), parcontre sur une
table innodb c'est de l'ordre de plusiueurs secondes.



http://dev.mysql.com/doc/mysql/fr/group-by-functions.html

"COUNT(*) est optimisée pour retourner très rapidement un résultat si
SELECT travaille sur une table, qu'aucune autre colonne n'est lue, et
qu'il n'y a pas de clause WHERE. Par exemple :

mysql> SELECT COUNT(*) FROM student;


Cette optimisation s'applique uniquement pour les tables MyISAM et
ISAM, car un compte exact du nombre de lignes est stocké pour ces types
de tables, et il peut être lu très rapidement. Pour les moteurs de
tables transactionnels, (InnodB, BDB), le stockage de cette valeur est
plus problématique, car plusieurs transactions peuvent survenir en même
temps, et affecter toutes ce compte."

--
Bruno
http://errance.lirano.net
Avatar
Daniel
Bonjour,
(Bruno Jargot) writes:

Daniel wrote:

> C'est à dire qu'en MyIsam sur une table de 10 Millions
> d'enregistrements, c'est quasi immédiat(0.00sec), parcontre sur une
> table innodb c'est de l'ordre de plusiueurs secondes.

http://dev.mysql.com/doc/mysql/fr/group-by-functions.html

"COUNT(*) est optimisée pour retourner très rapidement un résultat si
SELECT travaille sur une table, qu'aucune autre colonne n'est lue, et
qu'il n'y a pas de clause WHERE. Par exemple :

mysql> SELECT COUNT(*) FROM student;


Cette optimisation s'applique uniquement pour les tables MyISAM et
ISAM, car un compte exact du nombre de lignes est stocké pour ces types
de tables, et il peut être lu très rapidement. Pour les moteurs de
tables transactionnels, (InnodB, BDB), le stockage de cette valeur est
plus problématique, car plusieurs transactions peuvent survenir en m ême
temps, et affecter toutes ce compte."



Merci, pour l'info, j'avais cherché mais pas trouvé cette info.

--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Avatar
pgulutzan
Les gens qui ont construit InnoDB ont promis de corriger cela, dans le
long terme:
http://www.innodb.com/todo.php

Peter Gulutzan
MySQL AB