Optimisation de l'importation en bloc

Cette rubrique décrit les options d'optimisation de l'importation de données en bloc vers une table dans Microsoft SQL Server en utilisant une commande bcp, une instruction BULK INSERT ou une fonction OPENROWSET(BULK...) (Transact-SQL). Pour importer ou exporter en bloc des données aussi rapidement que possible, il est important de comprendre les facteurs qui affectent les performances et les identificateurs de commande disponibles pour gérer les performances. Dans la mesure du possible, utilisez une instruction Transact-SQL pour importer en bloc les données vers SQL Server, car Transact-SQL est plus rapide que bcp.

Notes

Ces méthodes sont comparées dans la section À propos des opérations d'exportation et d'importation en bloc.

L'optimisation maximale des performances d'une importation en bloc dépend des facteurs suivants :

  • Existence de contraintes, de déclencheurs ou des deux sur la table.

  • Mode de récupération utilisé par la base de données.

    Pour plus d'informations, consultez Vue d'ensemble du mode de récupération.

  • Table de destination des données copiées vide ou non vide.

  • Existence d'index pour la table.

  • Définition ou non de TABLOCK.

  • Données copiées depuis un seul client ou en parallèle depuis plusieurs clients.

  • Données copiées ou non entre deux ordinateurs exécutant SQL Server.

Important

Dans SQL Server 2005 et versions ultérieures, les optimisations d'importation en bloc sont disponibles lorsque les déclencheurs sont activés. La version de ligne, utilisée pour les déclencheurs, stocke les versions des lignes dans le magasin de versions de la base de données tempdb. Pour pouvoir importer en bloc un traitement important d'enregistrements de données au moyen de déclencheurs, vous devrez peut-être augmenter la taille de tempdb pour tenir compte de l'impact des déclencheurs sur le magasin de versions.

Pour plus d'informations sur l'impact de ces facteurs sur l'importation en bloc, consultez Recommandations pour l'utilisation de l'importation en bloc.

Méthodes d'optimisation de l'importation en bloc

Pour accélérer l'importation en bloc des données, SQL Server fournit les méthodes suivantes :

  • Utilisation de la journalisation minimale

    Le mode de récupération simple consigne les opérations en bloc de façon minime.

    Pour une base de données en mode de restauration complète, toutes les opérations d'insertion de ligne exécutées lors de l'importation en bloc sont complètement enregistrées dans le journal des transactions. Pour les importations de données volumineuses, le journal des transactions peut se remplir rapidement. Pour les opérations d'importation en bloc, la journalisation minimale est plus efficace que la journalisation complète et réduit la possibilité pour une importation en bloc de remplir l'espace de journalisation. Pour consigner une opération d'importation en bloc sur une base de données qui utilise généralement le mode de restauration complète, vous pouvez d'abord passer la base de données en mode de récupération utilisant les journaux de transactions. Après l'importation en bloc des données, repassez en mode de restauration complète. Pour plus d'informations, consultez Considérations relatives au remplacement du mode de récupération complet ou du mode de récupération utilisant les journaux de transactions.

    Notes

    Les lignes insérées font l'objet d'une journalisation minimale si la journalisation en bloc optimisée est applicable ; sinon, les lignes insérées sont totalement insérées dans le journal des transactions. Pour plus d'informations sur les opérations d'importation en bloc et la manière d'effectuer des opérations d'importation en bloc avec une journalisation minimale, consultez Opérations pouvant faire l'objet d'une journalisation minimale et Conditions requises pour une journalisation minimale dans l'importation en bloc.

  • Importation des données en parallèle depuis plusieurs clients vers une seule table

    SQL Server permet d'importer les données en bloc vers une seule table depuis plusieurs clients en parallèle. Les trois mécanismes d'importation en bloc prennent en charge l'importation parallèle des données, ce qui peut améliorer les performances des opérations d'importation.

    Pour plus d'informations, consultez Importation de données en parallèle avec un verrouillage de niveau table.

  • Utilisation de traitements

    Pour plus d'informations sur l'utilisation de traitements lors de l'importation des données, et sur les identificateurs de commandes de gestion des traitements, consultez Gestion de traitements pour l'importation en bloc.

    Notes

    L'option BULK de la clause OPENROWSET ne permet pas de contrôler la taille des traitements.

  • Désactivation des déclencheurs

    La désactivation des déclencheurs peut améliorer les performances.

    Pour plus d'informations sur l'impact de l'exécution de déclencheurs sur les opérations d'importation en bloc et sur l'activation ou la désactivation des déclencheurs, consultez Contrôle de l'exécution des déclencheurs lors de l'importation de données en bloc.

  • Désactivation des contraintes

    Pour plus d'informations sur l'impact de la vérification des contraintes sur l'importation en bloc et sur l'activation ou la désactivation des contraintes CHECK et FOREIGN KEY sur une table, consultez Contôle de la vérification des contraintes par les opérations d'importation en bloc.

  • Organisation des données d'un fichier de données

    Par défaut, une opération d'importation en bloc suppose que le fichier de données n'est pas ordonné. Si la table possède un index cluster, l'utilitaire bcp, l'instruction BULK INSERT et la fonction OPENROWSET(BULK…) (Transact-SQL) permettent de spécifier le mode de tri des données dans le fichier pendant l'importation en bloc. Les données du fichier de données ne doivent pas nécessairement être triées de la même manière que celles de la table. Toutefois, vous pouvez améliorer les performances de l'importation en bloc en triant les données du fichier de données et celles de la table de la même manière.

    Pour plus d'informations, consultez Contrôle de l'ordre de tri lors de l'importation de données en bloc.

  • CContrôle du fonctionnement du verrouillage

    Pour plus d'informations sur la définition du fonctionnement du verrouillage lors de l'importation en bloc, consultez Contrôle du mécanisme de verrouillage pour l'importation en bloc.

  • Importation de données dans le format natif

    Pour plus d'informations, consultez Utilisation du format natif pour importer ou exporter des données et Utilisation du format natif Unicode pour importer ou exporter des données.