6
votes

Déterminez quelle table prend la plupart des espaces disques dans MySQL

Quel est le moyen le plus simple de déterminer quelle table prend la plupart des espaces disques?

Un handicap: je n'ai pas de serveur mysql, seul le fichier avec toutes les données (benne / pql)


0 commentaires

3 Réponses :


9
votes

Vous voudrez peut-être télécharger MySQL Server , installez-le sur votre localhost, Importer le fichier de vidage , puis utiliser:

SELECT   table_schema, 
         table_name, 
         data_length, 
         index_length 
FROM     information_schema.tables
ORDER BY data_length DESC;


2 commentaires

J'ai dit que je cherche une solution sans serveur MySQL, je suis intéressé par des idées de traitement de texte uniquement


@Astropanic: C'est vrai, mais pourquoi ne pouvez-vous pas l'installer sur votre machine locale? Il y a une version de MySQL pour chaque plate-forme et elle s'installe en quelques minutes. Vous pouvez également l'installer dans un VM.



1
votes

Si vous êtes sur Linux, vous pouvez numériser le fichier de vidage pour la ligne la plus longue, qui peut (ou peut ne pas!) Soyez la table la plus grande en fonction des index, de la structure, etc., mais cela va être une suppose décente si vous Impossible d'obtenir un serveur.

awk ' { if ( length > L ) { L=length ;s=$0 } }END{ print L,"\""s"\"" }' /root/sql/_common.all.301009.sql  | cut -c 1-100


0 commentaires

0
votes

Une solution rapide peut être de faire quelque chose comme ça pour chaque table dans le décharge: xxx

(J'espère que vous utilisez Linux, sinon vous pouvez installer Cygwin pour obtenir une partie de la fonctionnalité de la ligne de commande Linux sur un système Windows)

Cette commande filtrera les instructions d'insertions du décharge pour une table spécifique et imprimez les octets totaux de ces relevés d'insertion filtrés. Bien sûr, la taille des relevés d'insertion n'est pas la même que la taille des lignes stockées dans la table, mais cela pourrait être une bonne approximation si vous n'avez besoin que de décider quelle table est (probablement) la plus grande.


4 commentaires

Vous devrez prétendre à prépraquer le fichier de vidage dans des tables individuelles pour utiliser cette commande - elle n'abandonnera que le nombre total de caractères dans ce formulaire.


C'est pourquoi il y a la commande grep entre le chat et la commande wc -c . Cela créera une telle décharge "individuelle" sur la mouche ...


Je ne comprends pas comment cela fonctionne, quand j'exécuteais, je n'ai que la somme des personnages de toutes les lignes?


Lorsque vous n'exécutez que la première partie de la commande cat benned.sql | grep -i '^ Insérer dans Table1 ' Vous ne devez voir que des lignes commençant par "INSERT dans Tableau1" et aucune ligne commençant par "Insérer dans la table2 ou quelque chose comme ça. Ces déclarations sont filtrées. Ces déclarations sont filtrées. Ces déclarations sont filtrées. . wc -c puis affiche les octets de seules les lignes correspondantes.