SQLServer预读和物理读的区别是什么

本篇文章为大家展示了SQL Server预读和物理读的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

在平江等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站设计、做网站 网站设计制作按需制作,公司网站建设,企业网站建设,品牌网站建设,全网整合营销推广,成都外贸网站建设公司,平江网站建设费用合理。


预读是在生成执行的同时去做的,通过这种方式可以提高IO的性能。而物理读是当执行计划生成好后去缓存读取数据发现缺少数据之后才到磁盘读取。当所有数据都从缓存中可以读取就变成逻辑读。
下面举个例子:
LINEITEM 表中大概存储了600W数据,我们使用SET STATISTICS IO ON:
SET STATISTICS IO ON
SELECT COUNT(*) FROM LINEITEM
Table 'LINEITEM'. Scan count 3, logical reads 22328, physicalreads 3, read-ahead reads20331, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
重复执行这条语句看到预读已经变为0,因为所有的数据已经在缓存中了:
SELECT COUNT(*) FROM LINEITEM
Table 'LINEITEM'. Scan count 3, logical reads 22328, physicalreads 0, read-ahead reads 0,lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
对于预读的解释:
数据库引擎支持称为“预读”的性能优化机制。预读首先预测执行查询执行计划所需的数据和索引页,然后在查询实际使用这些页之前将它们读入缓冲区高速缓存。这样可以让计算和 I/O 重叠进行,从而充分利用 CPU 和磁盘。
预 读机制允许数据库引擎从一个文件中读取最多 64 个连续页 (512KB)。该读取作为缓冲区高速缓存中相应数量(可能是非相邻的)缓冲区的一次散播-聚集读取来执行。如果此范围内的任何页在缓冲区高速缓存中已存 在,当读取完成时,所读取的相应页将被放弃。如果相应页在缓存中已存在,也可以从任何一端“裁剪”页的范围。

上述内容就是SQL Server预读和物理读的区别是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


当前名称:SQLServer预读和物理读的区别是什么
当前URL:http://scyanting.com/article/gposji.html