Od pewnego czasu używam mezji. Muszę przyznać, że czuję, że nie rozumiem dokładnie pojęcia mnesia:wait_for_tables/2. Zacytowanie poniższej dokumentacji mówi: mnesia: wait_for_tables/2, czy naprawdę to rozumiem?
Some applications need to wait for certain tables to be accessible in order to doTeraz, dla wszystkich aplikacji, które opracowałem, musiałem zadzwonić do tego podczas uruchamiania mojego backendu. W powyższej dokumentacji kontekst
useful work. mnesia:wait_for_tables/2 hangs until all tables in the Tab List are
accessible, or until timeout is reached.
"Some applications"
nie został rozwinięty dobrze i to jest moje pytanie.
To są moje myśli:
1. czeka w tej metody oznacza, że mamy do ładowania z tabel mnesia powiedzieć Disc do RAM (przypadek Disc_copies)
2. Osobiście uważam, że jeśli moja aplikacja składa się tylko z tabel
RAM (ram_copies)
, więc nie potrzebuję tej metody w moim kodzie. Teraz mam rację, myśląc, że jeśli mam tylko
disc_only_copies
, również nie potrzebuję tej funkcji.
3. Potrzebuję tej funkcji również przy ładowaniu tabel mnesii z sieci, zwłaszcza gdy moje tabele są replikowane, więc moje aplikacje muszą czekać na uruchomienie mnesii, aby przygotować te tabele. Ale nadal dotyczy to tylko tabel typu
disc_copies
, dlaczego aplikacja uruchamiana w całości na dysku lub w całości w pamięci RAM musi czekać i wczytać tabele?
pytania:
Pomoc i zbadać moje myśli 1, 2 i 3. Na ogół jest to funkcja potrzebne tylko wtedy, gdy do czynienia z mnesia typu tabeli: disc_copies
ponieważ ten typ ma coś wspólnego z kopiowania danych na dysku i pamięci RAM?
Jeśli moje tabele są pofragmentowane (zawsze nazywałem tę metodę dla każdego fragmentu, aby zapewnić, że mnesia przygotowuje ją do moich aplikacji), czy muszę wywoływać metodę dla fragmentu? jest metoda ATOMIC lub Transactional, jeśli nazywam to w ramach transakcji mnesia (co oznacza, że mnesia automatycznie załaduje wszystkie fragmenty tabel, jeśli określę samą tabelę podstawową)? czy rodzaj tabeli moich fragmentów ma również znaczenie w odniesieniu do tej funkcji?