Quel est le moyen le plus simple de déterminer quelle table prend la plupart des espaces disques? p>
Un handicap: je n'ai pas de serveur mysql, seul le fichier avec toutes les données (benne / pql) p>
3 Réponses :
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;
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.
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
Une solution rapide peut être de faire quelque chose comme ça pour chaque table dans le décharge: (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) p> 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. P > p>
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 code> entre le
chat code> et la commande
wc -c code>. 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 code> Table1
' code> 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 code> puis affiche les octets de seules les lignes correspondantes.