Postgresql un db avec plusieurs schémas vs plusieurs db avec un schéma
J'ai lu ce questionmais il ne m'aide pas. Considérant db administration, je pense que l'une db avec plusieurs schémas est plus facile à maintenir que l'autre option, mais en termes de performancelequel est le mieux?, est-il un avantage de l'un sur l'autre?
TIA.
source d'informationauteur snahor | 2009-09-06
Vous devez vous connecter pour publier un commentaire.
Si la performance est importante, il n'y a pas de substitut pour l'évaluation de votre cas d'utilisation spécifiques. Si elle n'est pas si important que cela, puis aller avec plus faciles à gérer! Le matériel est bon marché comparé à d'programmeur/DBA temps, et par rapport à la hausse attendue des taux d'accidents plus complexe de l'installation. Pour ne pas mentionner les ordinateurs de suivre la loi de Moore, mais le jour refuse obstinément de s'allonger.
Si j'avais à devinern'ayant pas étalonnés à votre cas d'utilisation spécifiques (puisque je ne peux pas), je suppose une base de données avec de multiples schémas seront plus performants parce que:
Chaque connexion à une base de données, autant que je sache. Configuration de la connexion/démontage est cher dans PostgreSQL.
De nombreux schémas est plus proche d'un grand nombre de tables que de nombreuses bases de données, et je m'attends à de nombreux tableaux pour être optimisé pour plus que je m'attends à de nombreuses bases de données.
Cependant, je peux voir un contre-exemple qui peuvent s'appliquer. Chaque base de données est stockée dans un seul répertoire. Cela rend le fractionnement des bases de données à travers des systèmes de fichiers—et donc les matrices de disques—vraiment facile d'utilisation normale du système de fichiers outils (par exemple, les points de montage et/ou des liens symboliques). Le fractionnement des bases de données à travers de multiples tableaux est très peu probable de les surpasser, plus RAID10 avec le même nombre de disques, mais fournira une meilleure isolation (base de données A fait un énorme requête n'affecteront pas la base de données B). Cependant, vérifiez que votre système d'exploitation de l'IO scheduler de la documentation; rappelez-vous que chaque connexion PostgreSQL dispose de sa propre backend processus, de sorte que par l'équité du processus de files d'attente peut faire mieux.
Notez que vous pouvez également segmenter les données sur les systèmes de fichiers à l'aide de PostgreSQL est
CREATE TABLESPACE
et amis, de sorte que le ci-dessus peut être fait avec des schémas.En terme de Performance, il va dépendent entièrement de votre application.
Par exemple, plusieurs bases de données nécessite la connexion de la mise en commun par la base de données. Si vous avez des centaines ou des milliers de bases de données, c'est à peu près signifie que vous ne pouvez pas faire le regroupement de connexion. Que va vous coûter cher performance de rien sauf de dire une application cliente avec une seule connexion persistante à la base de données.
Toutefois, si vous avez seulement accès à "une base de données à un temps" (et non pas en quelques secondes les uns des autres), le maintien des choses dans des bases de données distinctes aurez seulement besoin de charger la table de système de cache pour les bases de données qui sont activement utilisées, laissant plus de mémoire pour le cache de tables d'utilisateur (depuis les tables système dans chaque base de données sera beaucoup plus petite).
Dans la plupart des cas, les schémas dans une base de données de l'emporter. Assez commun de la solution est un hybride, de X bases de données et Y schémas.
Je ne pense pas que cela importe, de toute façon. Chaque table sera stocké dans un fichier séparé, la seule question est de savoir dans quel répertoire le fichier de vie. Depuis la performance est influencée principalement par les opérations de lecture et écriture sur des fichiers individuels, l'organisation des fichiers dans les répertoires doivent avoir peu d'effet.
Plusieurs bases de données ont pas d'avantage de performance sur plusieurs schémas (espaces de noms) que je peux voir (sauf peut-être si vous avez un nombre incroyablement élevé de tables).
CREATE TABLESPACE
vous permet de mettre ce que vous voulez où vous le souhaitez sur le système de fichiers, de sorte que le stockage physique peut être contrôlée par vous, dans les deux cas.La principale différence lorsque vous effectuez une requête sur plusieurs schémas, c'est beaucoup mieux que l'interrogation sur plusieurs bases de données. Aussi, vous pouvez être en mesure de partager plus de connexions via une connexion pooler si c'est toutes dans la même base de données.