Otimize o PostgreSQL para testes rápidos
Estou mudando para o PostgreSQL do SQLite para um aplicativo Rails típic
problema é que as especificações em execução ficaram lentas com o P
No SQLite levou ~ 34 segundos, no PG é ~ 76 segundos, o que émais de 2x mais lento.
Então, agora quero aplicar algumas técnicas ao traz o desempenho das especificações a par do SQLiteem modificações no código (idealmente, basta definir as opções de conexão, o que provavelmente não é possível
Casal de coisas óbvias do alto da minha cabeça são:
RAM Disk (seria bom ver uma boa configuração com o RSpec no OSX)abelas não registradas (elas podem ser aplicadas em todo o banco de dados para não alterar todos os scriptsomo você deve ter entendido, não me importo com a confiabilidade e o resto (o banco de dados é apenas uma coisa descartável aqui
Preciso tirar o máximo proveito do PG e torná-lo tão rápido quanto possível.
Melhor respost descreveria idealmente otruqueor fazer exatamente isso, a configuração e as desvantagens desses truque
ATUALIZAR fsync = off
+ full_page_writes = off
diminuiu o tempo para ~ 65 segundos (~ -16 segundos). Bom começo, mas longe do objetivo de 34.
UPDATE 2: I tentou usar o disco RAM mas o ganho de desempenho estava dentro de uma margem de erro. Portanto, não parece valer a pena.
UPDATE 3: * Encontrei o maior gargalo e agora minhas especificações são tão rápidas quanto as do SQLit
O problema foi a limpeza do banco de dados que fez o truncamento. Aparentemente, o SQLite é muito rápido l
Para "corrigir", eu abro umtransaçã antes de cada teste e role de volta no fina
lguns números para ~ 700 teste
Truncamento: SQLite - 34s, PG - 76s.Transação: SQLite - 17s, PG - 18s.Aumento de velocidade 2x para SQLite. Aumento de velocidade 4x para PG.