Comment avez-vous videz les frais généraux (Data_free) dans une table MEMORY MySQL?

StackOverflow https://stackoverflow.com/questions/4575035

  •  14-10-2019
  •  | 
  •  

Question

J'ai une table MEMORY MySQL pour un chat en direct (peut-être ce n'est pas le meilleur type de table pour cela?), Et suppression de lignes tous les soirs pour garder le chat enregistre la cause facile à gérer les frais généraux dans le tableau. Cependant, puisque vous ne pouvez pas exécuter OPTIMIZE sur une table MEMORY, comment voulez-vous vous débarrasser des frais généraux (Data_free dans le show table status)?

Était-ce utile?

La solution

  

comment voulez-vous vous débarrasser des frais généraux?

Vous pouvez forcer une table en utilisant le moteur de stockage MEMORY / HEAP pour récupérer l'espace résiduel perdu de lignes supprimées en altérant, mais rien changer. par exemple.

ALTER TABLE my_table ENGINE=MEMORY;

Il récrire la table. Sauvegarde qui avec une citation de la documentation :

  

Pour libérer la mémoire utilisée par les lignes   qui ont été supprimés, utilisez ALTER   TABLEAU MOTEUR = MEMORY pour forcer une table   reconstruire.

EDIT

  

peut-être ce n'est pas le meilleur type de table pour cela?

Il ne ressemble pas à l'application idéale d'une table MEMORY à mon avis - en gros, je considère comme un moteur existant. Certains Vivres pour la pensée

Tout d'abord, les tables de mémoire peuvent pas / ne pas utiliser les index b-tree (index de hachage uniquement), de sorte que les requêtes qui pourraient autrement utiliser un index pour la commande ou allant (c.-à-<,> opérations) station à trier / filtrer manuellement / exhaustive.

En second lieu, les tables InnoDB résidera dans la RAM si votre innodb_buffer_pool est assez grand, et fonctionne mieux avec threads simultanés, donc souvent Agit comme bon sinon mieux qu'une table MEMORY pour la plupart des applications.

En troisième lieu, peut-être plus important encore, si votre MySQL est toujours désactivé, vous perdrez toutes les données de votre table. Il y a des implications de troncature de table aussi si vous utilisez la réplication.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top