PostgreSQL Dans La Mémoire De La Base De Données
Je veux lancer mon serveur de base de données PostgreSQL à partir de la mémoire. La raison en est que sur mon nouveau serveur, j'ai 24 GO de mémoire, et à peine il est utilisé.
Je sais que je peux exécuter cette commande pour faire un ramdisk:
mdmfs -s 1024m md2 /mnt
Et j'ai pu, en théorie, PostgreSQL stocker ses données. Mais le problème, c'est que si le serveur tombe en panne ou redémarrage de l'ordinateur, les données seront perdues.
Fondamentalement, je veux que la base de données pour être chargé dans la mémoire à tout moment, de sorte qu'il n'a pas à aller sur le disque dur de lire tous les enregistrements, depuis j'ai des TONNES de mémoire et vu que la mémoire est plus rapide que les disques durs.
Est-il un moyen de le faire tout en ayant également PostgreSQL écrire sur le disque, donc je ne pas perdre toutes les données en cas de défaillance du serveur? Ou est-il un moyen pour mettre en cache toutes les données en mémoire?
- Avez-vous mesuré que presque rien de ces 24 giga-octets sont utilisés par postgresql?
- Vu que la mémoire est plus rapide que le disque qu'il devrait être un peu de vitesse mais, depuis PostgreSQL n'est pas conçu pour être exécuté en mémoire la vitesse peut ne pas être aussi grand que prévu. Par exemple PostgreSQL voudrais essayer de vider sa mémoire pour le stockage persistant (normalement le disque, la mémoire dans ce cas), voir le Mémoire de Systèmes de Bases de données: Une vue d'ensemble par Gracia-Molina et Kenneth Salem, voici mes notes de ce document.
Vous devez vous connecter pour publier un commentaire.
Je suis maintenant en utilisant le streaming de réplication qui est asynchrone. Cela signifie que mon MAÎTRE pourrait être en cours d'exécution tout en mémoire, avec des ESCLAVES instance à l'aide de disque traditionnel.
Une machine de redémarrer impliquerait l'arrêt de l'ESCLAVE, la copie de données postgresql en arrière dans le ramdisk, puis en redémarrant le MAÎTRE suivie par l'ESCLAVE. Ce serait une possibilité intéressante qui compare bien avec quelque chose comme le REDIS, mais avec l'avantage de la redondance /hotstandby /backup /sql /riche ensemble d'outils etc.
avez-vous vu le Configuration Du Serveur manuel chapitre? check it out, google
postgresql memory tuning
.Je crois que Postgres est écrit de telle manière à profiter pleinement de mémoire vive disponible sur le serveur. Comme vous l'avez deviné, il n'y a aucun moyen fiable de le faire à l'extérieur de Postgres.
Dans Postgres, les transactions s'assurer que toutes les opérations sont atomiques, donc si le pouvoir va vers le bas pendant que vous écrivez à une base de données Postgres, vous ne perdez qu'une opération particulière, et non pas l'ensemble de la base de données.
La réponse est la mise en cache. Regardez dans l'ajout de mémoire sur le serveur, puis mise au point PostgreSQL afin de maximiser l'utilisation de la mémoire. Aussi, le cache du système de fichiers aidera avec cela, faire cela automatiquement. Vous serez en mesure de la vitesse d'exécution, presque comme si elle était dans le souvenir, sauf pour le premier tube, tout en n'ayant pas à gérer vous-même, et être capable d'avoir une base de données de plus de la mémoire physique.