Je suis de commutation de PostgreSQL à partir de SQLite un exemple d'application Rails.
Le problème est que les spécifications devient lent avec PG.
Sur SQLite il a fallu ~34 secondes, sur PG c'est ~76 secondes qui est plus de 2x plus lent.
Alors maintenant, je veux appliquer quelques techniques pour apporter de la performance de l'specs sur le pair avec SQLite avec pas de modifications de code (idéalement juste en définissant les options de connexion, ce qui n'est probablement pas possible).
Couple de choses évidentes à partir du haut de ma tête sont:
- Disque RAM (bon programme d'installation avec RSpec sur OSX serait bon de voir)
- Tables non exploitées (peut-il être appliqué sur l'ensemble de la base de données donc je n'ai pas changer tous les scripts?)
Comme vous l'avez compris, je n'aime pas à propos de la fiabilité et le reste (la bd est tout simplement un jetable truc ici).
J'ai besoin d'obtenir les la plupart hors de la page et de le rendre aussi rapide qu'il pourrait l'être.
Meilleure réponse , l'idéal serait de décrire les astuces pour ce faire, le programme d'installation et les inconvénients de ces astuces.
Mise à JOUR: fsync = off
+ full_page_writes = off
seulement de la diminution du temps de ~65 secondes (~-16 secs). Bon début, mais loin de la cible de 34.
Mise à JOUR 2: j'ai essayé d'utiliser le disque RAM mais le gain de performance est à l'intérieur d'une marge d'erreur. Donc, ne semble pas en valoir la peine.
Mise à JOUR 3:* J'ai trouvé le plus gros goulot d'étranglement et maintenant mes specs courir aussi vite que l'SQLite.
La question a été à la base de données nettoyage de la troncature. Apparemment, SQLite est trop rapide.
Pour le "réparer" j'ai ouvert une transaction avant chaque test et de rouler de nouveau à la fin.
Quelques chiffres pour ~700 tests.
- Troncature: SQLite - 34s, PG - 76s.
- Transaction: SQLite - 17, PG - 18.
2x augmentation de la vitesse pour SQLite. 4x augmenter la vitesse de PG.