Conditions préalables pour une journalisation minimale lors de l’importation en bloc
S’applique à :SQL Server
Pour une base de données en mode de récupération complète, toutes les opérations d'insertion de lignes effectuées par importation en bloc sont entièrement enregistrées dans le journal des transactions. Les importations de données de grande taille peuvent entraîner un remplissage rapide du journal des transactions si le mode de récupération complète est utilisé. En revanche, sous le modèle de récupération simple ou le modèle de récupération journalisé en bloc, la journalisation minimale des opérations d’importation en bloc réduit le risque qu’une opération d’importation en bloc remplisse l’espace journal. La journalisation minimale est également plus efficace qu'une journalisation complète.
Notes
Le mode de récupération utilisant les journaux de transactions est conçu pour remplacer temporairement le mode de récupération complète durant les grandes opérations en bloc.
Conditions requises pour la journalisation minimale des opérations d’importation en bloc
La journalisation minimale nécessite que la table cible remplisse les conditions suivantes :
La table n’est pas répliquée.
Le verrouillage de la table est activé (à l'aide de TABLOCK).
Notes
Bien que les insertions de données ne soient pas consignées dans le journal des transactions lors des opérations d’importation en bloc à journalisation minimale, le Moteur de base de données consigne tout de même les allocations d’extensions chaque fois qu’une nouvelle extension est allouée à la table.
La table n’est pas une table optimisée en mémoire.
La possibilité de journalisation minimale pour une table dépend également du fait que celle-ci soit indexée et, si elle l'est, du fait qu'elle soit vide :
Si la table ne possède aucun index, les pages de données bénéficient de la journalisation minimale.
Si la table ne possède pas d'index cluster, mais possède un ou plusieurs index non cluster, les pages de données bénéficient toujours de la journalisation minimale. La manière dont les pages d'index sont journalisées dépend toutefois du remplissage de la table :
Si la table est vide, les pages d'index bénéficient de la journalisation minimale. Si vous démarrez avec une table vide et importez les données en bloc en plusieurs traitements, les pages de données et d'index bénéficient de la journalisation minimale pour le premier traitement, mais à partir du deuxième traitement, seules les pages de données bénéficient de cette journalisation minimale.
Si la table n’est pas vide, les pages d’index sont entièrement journalisées.
Si l’un des index a IGNORE_DUP_KEY = ON, les pages d’index et de données sont entièrement journalisées.
Si la table possède un index cluster et est vide, les pages de données et d'index bénéficient de la journalisation minimale. En revanche, si une table possède un index cluster B-tree et n’est pas vide, les pages de données aussi bien que les pages d’index bénéficient de la journalisation complète, quel que soit le mode de récupération choisi. Si vous commencez avec une table rowstore vide et importez en bloc les données par lots, les pages d’index et de données sont enregistrées au minimum pour le premier lot, mais à partir du deuxième lot, seules les pages de données sont journalisées en bloc.
Notes
De manière générale, la documentation SQL Server utilise le terme B-tree en référence aux index. Dans les index rowstore, SQL Server implémente une structure B+. Cela ne s’applique pas aux index columnstore ou aux magasins de données en mémoire. Pour plus d’informations, consultez le guide de conception et d’architecture d’index SQL Server et Azure SQL.
Pour plus d’informations sur la journalisation d’un index ColumnStore cluster (CCI), consultez les conseils concernant le chargement de données d’index columnstore.
Notes
Lorsque la réplication transactionnelle est activée, les opérations BULK INSERT sont entièrement journalisées, même sous le modèle de récupération journalisée en bloc.
Voir aussi
- Modes de récupération (SQL Server)
- Utilitaire bcp
- BULK INSERT (Transact-SQL)
- OPENROWSET (Transact-SQL)
- BACKUP (Transact-SQL)
- ALTER DATABASE (Transact-SQL)
- Indicateurs de table (Transact-SQL)
- INSERT (Transact-SQL)
Étapes suivantes
Commentaires
https://aka.ms/ContentUserFeedback.
Prochainement : Tout au long de l'année 2024, nous supprimerons progressivement les GitHub Issues en tant que mécanisme de retour d'information pour le contenu et nous les remplacerons par un nouveau système de retour d'information. Pour plus d’informations, voir:Soumettre et afficher des commentaires pour