Vantagens de um banco de dados em memória no SQLite [fechado]

li sobre a palavra-chave:memória: de um livro sobre SQLite hoje, mas só diz O que é, como usar e as explicações eram muito curtas. Então eu procurei por mais informações aqui, mas não consegui obter informações específicas do SQLite.

  1. Que vantagens tem o modo': memória:'? (Quando preciso disso?)

  2. o desempenho da base de dados de memória é mais rápido?

  3. ainda preciso de usar transacções numa base de dados de memória?

Author: Jenix, 2015-09-29

1 answers

A SQLite in-memory database ' s vantagem primária é o desempenho: em vez de ler e escrever para o disco, ele vai manter toda a base de dados em memória. A memória é muito mais rápida que o disco. Você verá a maior melhoria de desempenho com um disco giratório ou um servidor lo carregado fortemente, e menos com um SSD.

No entanto, isto não é uma panaceia para perguntas e tabelas mal escritas. Antes de chegar a um banco de dados em memória para melhorar o desempenho, certifique-se de otimizar o seu desenho da tabela, consultas e índices.

As principais desvantagens são uma vez que o processo fecha a base de dados se foi. E a base de dados não pode ser maior do que a memória disponível.

Os Commits podem ser mais rápidos, uma vez que não há necessidade de escrever no disco, por isso o modo autocommit pode ser mais rápido, mas as transacções devem ser usadas para fins de integridade de dados.

Note que uma base de dados SQLite temporária que não fique muito grande provavelmente será armazenada na memória.

Por causa das suas desvantagens, e porque você tem muito menos memória do que Armazenamento, antes de se comprometer com uma base de dados de memória tente uma base de dados temporária em vez disso. Isto é feito usando '' para o nome do ficheiro da base de dados. Isto irá escrever para um arquivo temporário, mas buffer o trabalho em um cache de memória. É o melhor de ambos os mundos, você tem melhor desempenho sem usar muita memória.

Mesmo que um ficheiro de disco seja atribuído para cada base de dados temporária, na prática, a base de dados temporária reside normalmente na cache de pager em memória e, portanto, é muito pouca diferença entre um banco de dados puro em memória criado por ":memory:" e um banco de dados temporário criado por um nome de arquivo vazio. A única diferença é que um": memória: "banco de dados deve permanecer na memória em todos os momentos, enquanto partes de um banco de dados temporário pode ser jogado para o disco se o banco de dados se torna grande ou se SQLite vem sob pressão de memória.

Perfil e compare a sua aplicação para ter a certeza de que resultará numa melhoria de desempenho, considere se seria melhor otimizar suas consultas e adicionar índices em vez disso, e certifique-se de que está ok se seus dados desaparecem.

 19
Author: Schwern, 2015-09-29 00:43:51