Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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 为什么即使在清理了各种缓存之后,逻辑读取也会出现在IO统计数据中?_Sql_Sql Server - Fatal编程技术网

Sql 为什么即使在清理了各种缓存之后,逻辑读取也会出现在IO统计数据中?

Sql 为什么即使在清理了各种缓存之后,逻辑读取也会出现在IO统计数据中?,sql,sql-server,Sql,Sql Server,我试图理解sql server(2014)中IO统计数据的输出,并使用AdventureWorks作为数据库 这是密码 DBCC FREESYSTEMCACHE('ALL') DBCC FREESESSIONCACHE DBCC FREEPROCCACHE DBCC FLUSHPROCINDB(7) CHECKPOINT DBCC DROPCLEANBUFFERS SET STATISTICS TIME ON SET STATISTICS IO ON SELECT * FROM [HumanR

我试图理解sql server(2014)中IO统计数据的输出,并使用AdventureWorks作为数据库

这是密码

DBCC FREESYSTEMCACHE('ALL')
DBCC FREESESSIONCACHE
DBCC FREEPROCCACHE
DBCC FLUSHPROCINDB(7)
CHECKPOINT
DBCC DROPCLEANBUFFERS

SET STATISTICS TIME ON
SET STATISTICS IO ON
SELECT * FROM [HumanResources].[Employee]
SET STATISTICS TIME OFF
SET STATISTICS IO OFF
输出是

SQL Server执行时间: CPU时间=0毫秒,运行时间=0毫秒

(受影响的290排) 表'Employee'。扫描计数1、逻辑读取9、物理读取1、预读读取7、lob逻辑读取0、lob物理读取0、lob预读读取0

SQL Server执行时间: CPU时间=15毫秒,运行时间=105毫秒


即使在清理了所有缓存和缓冲区之后,为什么逻辑读取的结果不是0,物理读取的结果不是10(已经提到1+9页逻辑读取)?我对逻辑读取的理解是从数据缓存中读取的页数(换句话说,sql server中表的数据缓存)

所有页面读取都是从缓冲池中的页面读取的,并且是逻辑读取

单物理读取意味着查询只需等待一个页面从光盘读入缓冲池

其余部分由读取,并且在查询需要它们时已在缓存中


这仍然会留下一页的差异,因为7加1等于8而不是9。这里的机制可能是

所有页面读取都是从缓冲池中的页面读取的,并且是逻辑读取

单物理读取意味着查询只需等待一个页面从光盘读入缓冲池

其余部分由读取,并且在查询需要它们时已在缓存中

这仍然会留下一页的差异,因为7加1等于8而不是9。可能是这里的机制