Documentation PostgreSQL 7.4.29 | ||||
---|---|---|---|---|
Pr�c�dent | Arri�re rapide | Chapitre 13. Conseils sur les performances | Avance rapide | Suivant |
Vous pourriez avoir besoin de r�aliser un grand nombre d'insertions pour remplir une base de donn�es au tout d�but. Voici quelques conseils et techniques pour vous assurer de r�aliser cela de la fa�on la plus efficace.
D�sactivez la validation automatique et faites une seule validation � la fin. (En SQL, ceci signifie de lancer BEGIN au d�but et COMMIT � la fin. Quelques biblioth�ques client pourraient le faire derri�re votre dos auquel cas vous devez vous assurer que la biblioth�que le fait quand vous le voulez.) Si vous permettez � chaque insertion d'�tre valid�e s�par�ment, PostgreSQL fait un gros travail pour chaque ligne ajout�e. Un b�n�fice suppl�mentaire de r�aliser toutes insertions dans une transaction est que si l'insertion d'une ligne �choue alors les lignes ins�r�es jusqu'� maintenant seront annul�es. Vous ne serez donc pas bloqu� avec des donn�es partiellement charg�es.
Utilisez COPY FROM STDIN pour charger toutes les lignes avec une seule commande plut�t que d'utiliser une s�rie de commandes INSERT. Ceci r�duit de beaucoup la partie d'analyse, de planification, etc. Si vous le faites, il n'est plus n�cessaire de d�sactiver l'autocommit car il ne s'agit que d'une commande.
Si vous chargez une table tout juste cr��e, la fa�on la plus rapide est de cr�er la table, de charger en lot les donn�es de cette table en utilisant COPY, puis de cr�er tous les index n�cessaires pour la table. Cr�er un index sur des donn�es d�j� existantes est plus rapide que de mettre � jour de fa�on incr�mentale � chaque ligne ajout�e.
Si vous augmentez une table existante, vous pouvez supprimer les index, charger la table, puis recr�er l'index. Bien s�r, les performances de la base de donn�es pour les autres utilisateurs pourraient �tre s�v�rement affect�es tout le temps o� l'index sera manquant. Vous devez aussi y penser � deux fois avant de supprimer des index uniques car la v�rification d'erreur apport�e par la contrainte unique sera perdue tout le temps o� l'index est manquant.
Augmentez temporairement la variable sort_mem lors de la restauration de grosses quantit�s de donn�es peut amener une am�lioration des performances. Ceci est d� au fait qu'un index B-tree est cr�� � partir de rien, le contenu d�j� existant de la table a besoin d'�tre tri�. Permettre au tri merge d'utiliser plus de pages du tampon signifie que moins de passes merge seront requises.
C'est une bonne id�e de lancer ANALYZE ou VACUUM ANALYZE � chaque fois que vous avez ajout� ou modifi� beaucoup de donn�es, ceci incluant le moment o� vous avez rempli la table de donn�es la premi�re fois. Ceci vous assurez que le planificateur dispose de statistiques � jour pour la table. Sans statistiques ou avec des statistiques obsol�tes, le planificateur pourrait faire de mauvais choix de plans de requ�tes, amenant de mauvaises performances sur les requ�tes utilisant votre table.
Pr�c�dent | Sommaire | Suivant |
Contr�ler le planificateur avec des clauses JOIN explicites | Niveau sup�rieur | Administration du serveur |