Aby zapobiec czyszczeniu bazy danych SQLite w pamięci, należy użyć tego samego połączenia, aby uzyskać dostęp do bazy danych. Jednak użycie tego samego połączenia powoduje, że SQLite synchronizuje dostęp do bazy danych. Tak więc, jeśli mam wiele wątków wykonujących odczyty na bazie danych w pamięci, jest ona wolniejsza na maszynie wielordzeniowej niż ten sam kod działający na bazie danych z zabezpieczonymi plikami.Czy bazy danych SQLite w pamięci mogą być skalowane przy użyciu współbieżności?
Czy jest jakiś sposób, aby uzyskać najlepsze z obu światów? Oznacza to, że baza danych w pamięci umożliwia wielokrotne, jednoczesne wywoływanie bazy danych?
To po prostu oznacza, że jest bezpieczny w użyciu od wielu wątków. Mogę o tym poświadczyć. Ale nie skaluje się - wykorzystuje tylko jeden rdzeń mojego dwurdzeniowego jądra. Tak więc bezpieczeństwo odbywa się kosztem wydajności. Aktualizacja mojego tytułu w celu wyjaśnienia. –
"wykorzystuje tylko jeden rdzeń" - oznacza to, że twoje wątki zostały wysłane w ten sposób! Może to być spowodowane przez wewnętrzne blokowanie lub inną synchronizację w sqlite. Jeśli naprawdę chcesz DB + współbieżność, powinieneś rozważyć jakiś niestandardowy kod z końcowym spłukaniem do współdzielonego DB. Myślę, że chcesz od sqlite za dużo. – Andrey
chodzi o to, że działa z bazą danych SQLite opartą na plikach (100% zużycia procesora), ale nie z bazą danych w pamięci. Jeśli SQLite nie obsługuje tego scenariusza, jest to w porządku, ale potrzebuję cytatu. –