SQL SERVER中的逻辑读,预读和物理读

sqlserver:数据存储方式:最小单位是页,每一页8k,sqlserver 对页的读取是具有原子性,也就是说,要么读取完整一页,要么完全不读取,不会有中间状态,而页之间的数据组织结构是B树

但是每一页的实际存储数据:8K= 8192字节-96字节(页头) - 36字节(行偏移) = 8060字节,也就是说:每一页用于存储的实际大小为8060


sqlserver的查询:第一步分别生成执行计划(占用CPU和内存资源),同步的用估计的数据去磁盘中取得需要取的数据(占用IO资源,这就是预读)

当查询计划生成好了之后去缓存 读取数据,当发现缓存缺少所需要的数据后让缓存再次去读硬盘(物理读)

最后从缓存中取出所有需要的数据(逻辑读取)

 如图:

当第一次查询完成后,再次进行查询时,所有请求的数据这时候已经在缓存中,sqlserver这时只要对缓存进行读取就行了,也就是只用进行逻辑读

posted @ 2016-07-25 11:14  那就让我这样吧  阅读(285)  评论(0编辑  收藏  举报