37
3.1 Choix de l’architecture matérielle
SELECT bpool_committed, bpool_commit_target FROM sys.dm_os_sys_info;
GO
-- vidons le buffer
CHECKPOINT;
DBCC DROPCLEANBUFFERS;
GO
-- pages validées du buffer
SELECT bpool_committed, bpool_commit_target FROM sys.dm_os_sys_info;
GO
Les résultats (sur notre portable) sont présentés sur le tableau 3.1.
Tableau 3.1 — Résultats des pages validées du buffer
SQL Server conserve donc la mémoire validée. Mais les pages sont-elles bien
effacées du buffer ? Nous pouvons le vérifier à l’aide de la DMV
sys.dm_os_buffer_descriptors qui détaille chaque page du buffer :
SELECT page_type, count(*) as page_count, SUM(row_count) as row_count
FROM sys.dm_os_buffer_descriptors
WHERE database_id = DB_ID('AdventureWorks')
GROUP BY page_type
ORDER BY page_type;
Après l’exécution de la commande DBCC DROPCLEANBUFFERS, cette requête donne
bien un résultat vide.
La DMV que nous venons d’utiliser a un intérêt purement informatif. Il n’est pas
crucial pour l’amélioration des performances de détailler le contenu du buffer. SQL
Server effectue un très bon travail par lui-même et n’a pas besoin d’inspection. Mais
la curiosité peut parfois vous amener à consulter le buffer. Voici une requête qui vous
permet de détailler son contenu par tables :
USE AdventureWorks;
GO
SELECT object_name(p.object_id) AS ObjectName,
bd.page_type,
count(*) as page_count,
SUM(row_count) as row_count,
SUM(CAST(bd.is_modified as int)) as modified_pages_count
FROM sys.dm_os_buffer_descriptors bd
JOIN sys.Allocation_units a
ON bd.allocation_unit_id = a.allocation_unit_id
bpool_committed
bpool_commit_target
avant toute requête :
3776
25600
après les SELECT :
0
0
après avoir vidé le buffer : 0
0
3.1 Choix de l’architecture matérielle
SELECT bpool_committed, bpool_commit_target FROM sys.dm_os_sys_info;
GO
-- vidons le buffer
CHECKPOINT;
DBCC DROPCLEANBUFFERS;
GO
-- pages validées du buffer
SELECT bpool_committed, bpool_commit_target FROM sys.dm_os_sys_info;
GO
Les résultats (sur notre portable) sont présentés sur le tableau 3.1.
Tableau 3.1 — Résultats des pages validées du buffer
SQL Server conserve donc la mémoire validée. Mais les pages sont-elles bien
effacées du buffer ? Nous pouvons le vérifier à l’aide de la DMV
sys.dm_os_buffer_descriptors qui détaille chaque page du buffer :
SELECT page_type, count(*) as page_count, SUM(row_count) as row_count
FROM sys.dm_os_buffer_descriptors
WHERE database_id = DB_ID('AdventureWorks')
GROUP BY page_type
ORDER BY page_type;
Après l’exécution de la commande DBCC DROPCLEANBUFFERS, cette requête donne
bien un résultat vide.
La DMV que nous venons d’utiliser a un intérêt purement informatif. Il n’est pas
crucial pour l’amélioration des performances de détailler le contenu du buffer. SQL
Server effectue un très bon travail par lui-même et n’a pas besoin d’inspection. Mais
la curiosité peut parfois vous amener à consulter le buffer. Voici une requête qui vous
permet de détailler son contenu par tables :
USE AdventureWorks;
GO
SELECT object_name(p.object_id) AS ObjectName,
bd.page_type,
count(*) as page_count,
SUM(row_count) as row_count,
SUM(CAST(bd.is_modified as int)) as modified_pages_count
FROM sys.dm_os_buffer_descriptors bd
JOIN sys.Allocation_units a
ON bd.allocation_unit_id = a.allocation_unit_id
bpool_committed
bpool_commit_target
avant toute requête :
3776
25600
après les SELECT :
0
0
après avoir vidé le buffer : 0
0
