Per impedire che un database in memoria SQLite venga ripulito, è necessario utilizzare la stessa connessione per accedere al database. Tuttavia, utilizzando la stessa connessione, SQLite sincronizza l'accesso al database. Pertanto, se ho molti thread che eseguono letture su un database in memoria, è più lento su un computer multi-core rispetto allo stesso codice esatto in esecuzione su un database supportato da file.I database SQLite in memoria possono scalare con la concorrenza?
C'è un modo per ottenere il meglio da entrambi i mondi? Cioè, un database in memoria che consente più chiamate simultanee al database?
Ciò significa solo che è sicuro da utilizzare da più thread. Posso testimoniarlo. Ma non scala: utilizza solo un singolo core del mio dual core. Quindi è sicurezza a scapito delle prestazioni. Aggiornamento del mio titolo per chiarire. –
"usa solo un singolo core" - significa che i tuoi thread sono stati spediti in quel modo! Ciò può essere causato da un blocco interno o altra sincronizzazione in sqlite. Se si desidera realmente la concorrenza DB +, è necessario considerare un codice personalizzato con lo svuotamento finale sul DB condiviso. penso che tu voglia da sqlite troppo. – Andrey
il punto è che funziona con un database SQLite basato su file (consumo della CPU del 100%), ma non con un database in memoria. Se SQLite non supporta questo scenario, va bene, ma ho bisogno di una citazione. –