小编Naw*_*wap的帖子

即使在 Disabling Read-Ahead 和 clearing buffer 之后,为什么还有 Logical Read?

当所有数据页都应仅在磁盘中时,我必须找到在 SQL-SERVER 2016 中执行查询所需的总时间。为此,我使用以下命令清除了 SQL-SERVER 中的所有缓冲区:

DBCC FREEPROCCACHE WITH NO_INFOMSGS
GO
DBCC DROPCLEANBUFFERS
GO
DBCC FREESESSIONCACHE
GO
DBCC FREESYSTEMCACHE ('ALL') WITH MARK_IN_USE_FOR_REMOVAL
GO 
DBCC FLUSHPROCINDB (@dbId)
GO
Run Code Online (Sandbox Code Playgroud)

在此之后,我再次发现存在逻辑读取,然后我了解了 Read-Ahead ,因此我通过跟踪标志禁用了预读

DBCC TRACEON(652,-1)
GO
Run Code Online (Sandbox Code Playgroud)

以及预取标志

DBCC TRACEON(8744,-1)
GO
Run Code Online (Sandbox Code Playgroud)

现在我仍然有逻辑读取,但物理读取明显高于清除缓冲区。有什么办法可以实现0逻辑读,还是我对逻辑读的理解有误?

请指导我,我是 SQL-SERVER 世界的新手

sql-server query cache

8
推荐指数
2
解决办法
1276
查看次数

标签 统计

cache ×1

query ×1

sql-server ×1