2010-09-25 6 views
1

J'ai une table avec pour les colonnes, un smallint, un nombre entier et deux flotteurs. La mémoire attendue pour chaque ligne est de 14 octets (2 + 4 + 2 * 4). J'ai environ 700 000 lignes dans ma table. Je n'ai défini aucune clé primaire et aucun index. Alors que le type MyIsam prend environ 10 Mo (moyenne de 15b pour chaque ligne), le type InnoDB prend plus de 30 Mo (moyenne de 44b). Qu'est-ce qui me manque ici? InnoDB aurait-il autant de frais généraux pour chaque rangée, ou le numéro d'état de la table ne serait-il pas fiable? J'ai besoin de stocker des données qui vont fonctionner en Go, donc il faut décider du type de stockage en pesant différents paramètres.Taille de ligne InnoDB grande par rapport à MyIsam

Répondre

0

Les tables InnoDB occupent plus d'espace par rapport à MyISAM. Si le compromis entre l'utilisation du stockage et les fonctionnalités offertes par InnoDB (sécurité en cas de panne, transactions et clés étrangères) favorise InnoDB, c'est à vous de décider. Étant moi-même passé de MyISAM à InnoDB, je ne reviendrais pas.

Il est intéressant de noter que si vous allez de l'avant et utilisez InnoDB, vous voudrez certainement définir une clé primaire (et idéalement une clé courte). Ceci est dû à la façon dont InnoDB se comporte par rapport au stockage et à d'autres indices. Voir this page.

+0

Ya, cela répond à ma question avec ce http://stackoverflow.com/questions/2914492/mysql-innodb-table-size-question – Grungean

Questions connexes