Sql server 2008 r2 “这可能是什么原因?”;重IO“;启用SQL Server更改跟踪时数据库中的活动?
我正在做一些测试,以量化SQL Server的更改跟踪功能的性能/可靠性。我有一个表t1,在其中插入了一百万行,一次关闭更改跟踪,一次打开更改跟踪。我正在监视syscommittab的大小、更改跟踪表的大小以及根据数据库记录的I/O。正如预期的那样,更改跟踪表和syscommitab仅在打开更改跟踪时才会填充。我希望根据数据库记录的IOs与这些表的大小“成比例”。但令我惊讶的是,这些都太离谱了。根据数据库记录的IOs比这两个表的大小多很多。想知道是否有人知道为什么或者可以给我一些建议来解决这个问题。我正在使用sys.dm_io_virtual_file_stats()确定数据库上的io活动,并使用以下查询确定跟踪表和syscommittab的大小Sql server 2008 r2 “这可能是什么原因?”;重IO“;启用SQL Server更改跟踪时数据库中的活动?,sql-server-2008-r2,Sql Server 2008 R2,我正在做一些测试,以量化SQL Server的更改跟踪功能的性能/可靠性。我有一个表t1,在其中插入了一百万行,一次关闭更改跟踪,一次打开更改跟踪。我正在监视syscommittab的大小、更改跟踪表的大小以及根据数据库记录的I/O。正如预期的那样,更改跟踪表和syscommitab仅在打开更改跟踪时才会填充。我希望根据数据库记录的IOs与这些表的大小“成比例”。但令我惊讶的是,这些都太离谱了。根据数据库记录的IOs比这两个表的大小多很多。想知道是否有人知道为什么或者可以给我一些建议来解决这个问
SELECT sct1.name as CT_schema,
sot1.name as CT_table,
ps1.row_count as CT_rows,
ps1.reserved_page_count*8./1024. as CT_reserved_MB,
sct2.name as tracked_schema,
sot2.name as tracked_name,
ps2.row_count as tracked_rows,
ps2.reserved_page_count*8./1024. as tracked_base_table_MB,
change_tracking_min_valid_version(sot2.object_id) as min_valid_version
FROM sys.internal_tables it
JOIN sys.objects sot1 on it.object_id=sot1.object_id
JOIN sys.schemas AS sct1 on
sot1.schema_id=sct1.schema_id
JOIN sys.dm_db_partition_stats ps1 on
it.object_id = ps1. object_id
and ps1.index_id in (0,1)
LEFT JOIN sys.objects sot2 on it.parent_object_id=sot2.object_id
LEFT JOIN sys.schemas AS sct2 on
sot2.schema_id=sct2.schema_id
LEFT JOIN sys.dm_db_partition_stats ps2 on
sot2.object_id = ps2. object_id
and ps2.index_id in (0,1)
WHERE it.internal_type IN (209, 210)
and (sot2.name='t1' or sot1.name='syscommittab')
我在运行查询之前进行检查点设置
任何提示或指示都非常感谢
对上述SQL的确认。这可能更好,这可能更好