Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 r2 “这可能是什么原因?”;重IO“;启用SQL Server更改跟踪时数据库中的活动?_Sql Server 2008 R2 - Fatal编程技术网

Sql server 2008 r2 “这可能是什么原因?”;重IO“;启用SQL Server更改跟踪时数据库中的活动?

Sql server 2008 r2 “这可能是什么原因?”;重IO“;启用SQL Server更改跟踪时数据库中的活动?,sql-server-2008-r2,Sql Server 2008 R2,我正在做一些测试,以量化SQL Server的更改跟踪功能的性能/可靠性。我有一个表t1,在其中插入了一百万行,一次关闭更改跟踪,一次打开更改跟踪。我正在监视syscommittab的大小、更改跟踪表的大小以及根据数据库记录的I/O。正如预期的那样,更改跟踪表和syscommitab仅在打开更改跟踪时才会填充。我希望根据数据库记录的IOs与这些表的大小“成比例”。但令我惊讶的是,这些都太离谱了。根据数据库记录的IOs比这两个表的大小多很多。想知道是否有人知道为什么或者可以给我一些建议来解决这个问

我正在做一些测试,以量化SQL Server的更改跟踪功能的性能/可靠性。我有一个表t1,在其中插入了一百万行,一次关闭更改跟踪,一次打开更改跟踪。我正在监视syscommittab的大小、更改跟踪表的大小以及根据数据库记录的I/O。正如预期的那样,更改跟踪表和syscommitab仅在打开更改跟踪时才会填充。我希望根据数据库记录的IOs与这些表的大小“成比例”。但令我惊讶的是,这些都太离谱了。根据数据库记录的IOs比这两个表的大小多很多。想知道是否有人知道为什么或者可以给我一些建议来解决这个问题。我正在使用sys.dm_io_virtual_file_stats()确定数据库上的io活动,并使用以下查询确定跟踪表和syscommittab的大小

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的确认。

这可能更好,这可能更好