13.4. Remplir une base de donn�es

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.

13.4.1. D�sactivez la validation automatique (autocommit)

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.

13.4.2. Utilisez COPY FROM

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.

13.4.3. Supprimez les index

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.

13.4.4. Augmentez sort_mem

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.

13.4.5. Lancez ANALYZE apr�s

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.