Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Base de données SQL dans Microsoft Fabric
Les E/S d’une instance du moteur de base de données incluent les écritures logiques et physiques. Une écriture logique se produit lorsque les données sont modifiées dans une page du cache des tampons. Une écriture physique se produit lorsque la page est écrite du cache tampon sur le disque.
Lorsqu’une page est modifiée dans le cache de mémoire tampon, elle n’est pas immédiatement réécrite sur le disque ; Au lieu de cela, la page est marquée comme sale. Cela signifie qu’une page peut avoir plusieurs écritures logiques effectuées avant qu’elle soit physiquement écrite sur le disque. Pour chaque écriture logique, un enregistrement du journal des transactions est inséré dans le cache du journal qui enregistre la modification. Les enregistrements de journal doivent être écrits sur le disque avant que la page sale associée ne soit supprimée du cache tampon et écrite sur le disque.
SQL Server utilise une technique appelée journalisation en écriture anticipée (WAL) qui empêche l’écriture d’une page incorrecte avant l’écriture de l’enregistrement du journal associé sur le disque. Il s'agit là d'un aspect essentiel au bon fonctionnement du gestionnaire de récupération. Pour plus d’informations, consultez le journal des transactions en écriture anticipée.
Comment SQL Server écrit une page de données modifiée
L'illustration ci-dessous montre le processus d'écriture d'une page de données modifiée.
Si le gestionnaire de mémoires tampons écrit une page, il recherche les pages de modifications adjacentes pouvant être incluses dans une seule opération d'écriture de regroupement. Les pages adjacentes ont des ID de page consécutifs et proviennent du même fichier ; les pages ne doivent pas être contiguës en mémoire. La recherche se continue en amont et en aval jusqu'à ce que l'un des événements suivants se produisent :
- une page correcte a été trouvée ;
- 32 pages ont été trouvées ;
- Une page sale est trouvée dont le numéro de séquence du journal (LSN) n'a pas encore été vidé dans le journal.
- Une page est trouvée qui ne peut pas être immédiatement bloquée.
De cette manière, l'ensemble complet de pages peut être écrit sur le disque lors d'une seule opération d'écriture en regroupement.
Juste avant l'écriture d'une page, la forme de protection de page spécifiée dans la base de données est ajoutée à la page.
Si la protection de page déchirée est ajoutée, la page doit être bloquée exclusivement (EX) pour les E/S. En effet, la protection de page endommagée modifie la page et la rend illisible pour n'importe quel autre thread.
Si une protection de page de somme de contrôle est ajoutée ou si la base de données n'utilise aucune protection de page, la page est verrouillée avec un verrou de mise à jour (UP) pour l'E/S. Ce verrou empêche quiconque de modifier la page durant l'écriture tout en permettant aux lecteurs de l'utiliser.
Pour plus d’informations sur les options de protection des E/S de disque, consultez La gestion des mémoires tampons.
Comment les pages sales sont écrites sur le disque
Une page sale est écrite sur le disque de l'une des trois manières :
Les processus d'écriture paresseuse, d'écriture impatiente et de point de contrôle n'attendent pas la fin de l'opération d'E/S. Ils utilisent toujours les E/S asynchrones (ou chevauchées) et poursuivent d'autres tâches, et vérifient le bon fonctionnement de l'E/S ultérieurement. Ainsi, SQL Server peut optimiser l'utilisation des ressources processeur et d'E/S pour les tâches appropriées.
Processus d'écriture paresseux
Le processus du "lazy writer" est un processus système qui assure la disponibilité des buffers libres en supprimant les pages peu fréquemment utilisées du cache des buffers. Les pages de modifications sont écrites en priorité sur le disque.
Processus d'écriture rapide
Le processus d'écriture impatient écrit des pages de données sales associées à des opérations peu enregistrées telles que l'insertion en masse et la sélection dans. Ce processus permet la création et l'écriture en parallèle de nouvelles pages. Autrement dit, l’opération appelante n’a pas besoin d’attendre la fin de l’opération entière avant d’écrire les pages sur le disque.
Processus de point de contrôle
Le processus de point de contrôle analyse périodiquement le cache tampon à la recherche de tampons contenant des pages provenant d'une base de données spécifiée et écrit toutes les pages sales sur le disque. Les points de contrôle permettent d'économiser du temps lors d'une récupération ultérieure en créant un point où toutes les pages sales sont garanties d'avoir été écrites sur le disque.
L’utilisateur peut demander une opération de point de contrôle à l’aide de la CHECKPOINT commande, ou le moteur de base de données peut générer des points de contrôle automatiques en fonction de la quantité d’espace de journal utilisé et du temps écoulé depuis le dernier point de contrôle. De plus, un point de contrôle est généré si certaines activités se produisent. Par exemple, si un fichier journal ou de données est ajouté ou supprimé d’une base de données, ou en cas d’arrêt de l’instance de SQL Server.
Pour plus d’informations, consultez Points de contrôle et partie active du journal.