mssql sqlserver中逻辑读、物理读、预读的概念说明


摘要:
下文讲述sql执行计划中,常常看见的逻辑读、物理读、预读的概念,如下所示:

每条sql脚本在数据库引擎中运行时,都会进行相应的解析,生成相应的执行计划,并预估读取数据,读取多少数据,是否存在缓存等等操作,数据库引擎对SQL脚本进行分析后,就会产生相应的“逻辑读、物理读、预读”等操作。下文将依次讲述这些操作的概念,如下所示:

逻辑读

逻辑读:sqlserver从数据缓冲区读取的页数。
对于相同的查询语句(未做索引设置等其它系统操作时),理论上每次读取的逻辑读是不会发生变化的。
逻辑读值越小,代表使用服务器资源少,相同的查询语句,逻辑读越小,那么此执行方式越优。

物理读

物理读:sql引擎将数据从硬盘上读入进数据缓冲区的过程我们称之为“物理读”。
物理读:因为涉及硬盘、内存、cpu等多硬件,所以物理读会占用更多的服务器资源

减少物理读次数(如果脚本无法优化时),最快捷的方式可以加大服务器的内存,使大量的数据存储在系统的高速缓冲区中。


预读

预读:预读是sql引擎提前将数据从硬盘上读取至数据缓冲区中。
预读:是sql引擎根据执行计划提前进行操作的一种机制,预读是sql引擎加快数据查询速度的一种方式。