物理读 逻辑读 即时读 一致读 读一致性 这几个概念很容易混淆,下面来深入讨论。 1. 物理读(physical reads) 什么叫计算机中的物理读? 如果我们需要的数据不在内存中,那么cpu要获取该数据就必须去磁盘上读取。此时必须要经过磁盘控制器的输入输出,这就叫物理I/O. 表现在ORACLE中,就是如果一个session查询一个表,此时这个表数据没有在内存中,那么计算机必须去磁盘上的数据文件中读出数据到 内存,并从内存中传入cpu中执行,此时就产生了物理i/o。 记住:一次物理读必然引起一次逻辑读。 2. 逻辑读(logic reads)(=即时读+一致读) 什么叫计算机中的逻辑读? 如果我们需要的数据此时恰好在内存中,那么就不需要去磁盘上读取,直接在内存中获取到传入cpu中即可,这就叫逻辑I/O。 而在oracle数据库中,对于逻辑读的定义和计算机原理中的逻辑读定义是有区别的。 并且oracle定义:逻辑读=即时读+一致读。 将数据从内存中传入cpu执行,我们叫逻辑读。所以同样的业务,cpu处理得越少,肯定响应时间越快,cpu处理得越少必然逻辑读就更少。 所以:反过来,有效降低逻辑读,必然节约更多的处理时间,这就是sql优化的基本准则。 3. 即时读(db block gets) 什么是即时读? 这个是oracle数据库专有的概念:得到块来实际更新所要修改的行时,所完成的获取叫即时读【tom大师】。 注意是修改,所以可以肯定:select不会发生即时读,它只发生在update和delete时。
物理读&逻辑读&即时读&一致读&读一致性
最新推荐文章于 2024-04-08 22:19:02 发布
本文详细解释了Oracle数据库中的物理读、逻辑读(即时读+一致读)、即时读、一致读和读一致性等概念。物理读涉及磁盘I/O,逻辑读指数据在内存中获取,即时读仅发生在更新和删除操作,一致读是构造一致性数据的过程,而读一致性确保查询期间数据的稳定性。
摘要由CSDN通过智能技术生成