Właśnie zacząłem grać z Berkeley DB kilka dni temu, więc próbuję sprawdzić, czy czegoś brakuje, jeśli chodzi o przechowywanie danych tak szybko, jak to możliwe.Optymalizowanie wydajności w Berkeley DB
Oto kilka informacji na temat danych: - chodzi w 512 bajtowych kawałkami - kawałki przychodzą w celu - kawałki zostaną usunięte w FIFO celu - jeśli mogę stracić niektóre dane z końca z powodu awarii zasilania, która jest OK tak długo, jak cały db nie jest uszkodzony
Po przeczytaniu całej dokumentacji wyglądało na to, że kolejka db była dokładnie tym, czego chciałem.
Jednak po wypróbowaniu kodu testowego moje najszybsze wyniki wynosiły około 1 MB na sekundę, po prostu przepuszczając przez DB-> zestaw z zestawem DB_APPEND. Próbowałem również używać transakcji i masowych putów, ale oba te spowolniły znacznie, więc nie ścigałem ich przez dłuższy czas. Wstawiałem do nowej bazy danych utworzonej na chipie NANDFlash na mojej płycie Freescale i.MX35.
Ponieważ chcemy uzyskać prędkość zapisu na poziomie co najmniej 2 MB na sekundę, zastanawiałem się, czy jest coś, co pominąłem, co może poprawić szybkość, ponieważ wiem, że mój sprzęt potrafi pisać szybciej.
Dzięki za komentarz. Jednakże odkryłem, że po prostu umożliwienie środowisku powoduje zbyt dużą degradację wydajności w porównaniu z nieużywaniem. Myślę, że ma to związek z WAL, więc te flagi pomogłyby mi, ale nawet bez środowiska wszystko jest zbyt wolne. – jjfine
@jjfine: Wierzę, że środowisko jest używane niejawnie z anonimowymi transakcjami (auto-commit), jeśli nie robisz tego wyraźnie. Więc nie korzystanie ze środowiska nie pomoże. –
@VladLazarenko, więc jeśli mogę ustawić jedną z tych 2 flagami, gdy zamknę db Berkeley, będzie cache być zaczerwieniona z powrotem na dysk? – Alcott