2010-03-16 9 views
3

Je suis en cours d'exécution:MySQL - Comment déterminer si ma table est stockée en RAM?

MySQL v5.0.67 
InnoDB engine 
innodb_buffer_pool_size = 70MB 

Question: Quelle commande puis-je utiliser pour faire en sorte que toute ma base de données de 50 Mo est stockée entièrement en RAM?

+0

Je ne suppose pas que "utiliser le moteur' MEMORY' "est une réponse acceptable? –

+0

Je n'utilise pas le moteur MEMORY car si le serveur tombe en panne, je ne veux pas perdre toutes mes données. C'est pourquoi j'utilise INNODB, avec une taille de valeur RAM supérieure à celle de mon jeu de données. (Bonne question cependant) – HankT

Répondre

1

Je suis curieux de savoir pourquoi vous voulez stocker toute la table en mémoire. Je suppose que vous n'êtes pas. La chose la plus importante pour moi est si vos requêtes fonctionnent bien et si vous êtes lié à l'accès au disque. Il est également possible que le système d'exploitation ait mis en cache les blocs de disque dont vous avez besoin s'il y a de la mémoire disponible. Dans ce cas, même si MySQL ne l'a pas en mémoire, le système d'exploitation le fera. Si vos requêtes ne fonctionnent pas bien, et vous pouvez le faire, je recommande fortement d'ajouter plus de mémoire si vous voulez tout dans la RAM. Si vous avez des ralentissements, il est plus probable que vous êtes en conflit.

show table status 

vous montrera certaines des informations.

Si vous obtenez le serveur de statistiques IO/tampon/cache de

show server status 

puis exécutez une requête qui nécessite chaque ligne pour accéder (par exemple additionner les valeurs non vides de chaque ligne en utilisant une colonne qui est non indexé) et vérifiez si des E/S se sont produites.

Je doute que vous mettiez en mémoire tout le contenu de la mémoire avec seulement 70 Mo. Vous devez sortir beaucoup de tampons de mémoire cache, temporaire et d'index de ce total.

Jacob