2010-12-12 64 views
1

Je suis situation lorsque l'une des tables de taille 2G et après je ne peux pas travailler avec cette table,comment démarrer la table en mnesia?

'mynode @ localhost' 5> mnesia: dirty_first (my_table). ** Exited: {aborted, {badarg, [my_table]}} **

Je comprends que j'ai besoin d'appliquer une fragmentation, mais comment le faire en exécution? Et la principale question est - comment démarrer my_table pour réduire sa taille en cours d'exécution? (je veux dire sans redémarrer Mnesia)

+0

J'ai pas le choix. Je coupe le fichier de 2000M à 1999M et répare la table – vinnitu

Répondre

0

Quel type de données stockez-vous en Mnesia? D'après ce que je comprends, vous essayez de traverser votre table, n'est-ce pas? Si vous décidez de la quantité maximale de données qui sera stockée dans votre base de données, vous pouvez prédéfinir le nombre de fragments dont vous avez besoin lors de la création de la table.

Sinon, si vous devez reconfigurer votre base de données déjà fragmentée, vérifier si le lien ci-dessous vous aide à :: http://www.erlang.org/doc/apps/mnesia/Mnesia_chap5.html

+0

oui, j'essaie de parcourir tous les enregistrements de la table et pour le moment il n'est pas fragmenté du tout. Puis-je fragmente table avec des données? ou j'ai besoin de recréer une table avec de nouveaux attributs? – vinnitu

+1

Vous pouvez sûrement créer une table fragmentée en utilisant "frag_properties" lors de la création de la table. Je suppose que vous savez comment accéder aux données à partir d'une base de données fragmentée. Mnesia maintient un hachage pour trouver dans quel fragment se trouvent les données. Je pense que vous pouvez ajouter des fragments supplémentaires en utilisant mnesia: change_table_frag (my_table, {attr, Val}). S'il vous plaît vérifier le lien que je vous avais donné – Arunmu