J'ai deux serveurs identiques (en termes de matériel), ce sont tous les deux des installations standard de Windows Server 2008 R2, avec un minimum de logiciels installés (essentiellement mon code et des trucs requis comme jvm, etc.).
Sur un serveur, j'exécute le serveur SQL 2005, sur le deuxième serveur PostgreSQL 9.1. La différence de performances b / n ces 2 serveurs est stupéfiante, c'est tellement mauvais sur postgresql que je regrette mon discours initial "utilisons postgresql au lieu de payer la licence du serveur sql" à mon patron. Nous parlons de différences de 30 secondes contre 15 minutes pour la même commande, et ce n'est pas seulement cette seule commande, c'est n'importe quelle requête ou commande que je lance. Ils ont tous deux à peu près les mêmes données (les enregistrements ont été insérés dans un ordre différent), et les deux bases de données ont exactement la même structure / index, etc.
Mais j'espère que ce n'est qu'une question de réglage des performances. Le fait est que le serveur sql utilise à peu près les 32 concerts de RAM sur le serveur, tandis que postgresl n'utilise rien, certainement moins qu'un concert, même si je ne l'ai pas vraiment compris en détail.
Comment puis-je demander à postgresql d'utiliser plus de 20 concerts de RAM? Ces serveurs ont été construits spécifiquement pour ces trucs de base de données, donc tout ram non utilisé par la base de données et les processus de support est à mon avis gaspillé.
SET effective_cache_size=18G;
(le paramètre par défaut est extrêmement bas) BTW: en supposant qu'il s'agit d'une machine 64 bits (pas de PTE)