暂无图片
为什么逻辑读多的语句,耗费cpu高?
我来答
分享
暂无图片 匿名用户
为什么逻辑读多的语句,耗费cpu高?

逻辑读,不是再内存发生的吗?

物理读,是磁盘中的

内存中总部磁盘快

为什么不是物理读更消耗cpu呢?反而是逻辑读

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
广州_老虎刘

你前面的理解是对的. 

相同大小的表, 从磁盘读确实会比从内存读消耗更多的CPU. 因为物理读最后都要转化成逻辑读.  

你觉得逻辑读更耗CPU, 是因为物理读时CPU有休息时间(整个过程时间长), 纯逻辑读CPU得不到休息, 时间短.

假如一个表的数据都在磁盘, IO消耗1分钟,cpu消耗2秒,cpu在这62秒里面比较闲(大部分时间在等IO,所以1个cpu可以同时轻松处理多个任务,CPU多线程的意义); 纯逻辑读的cpu消耗1秒,这种读取cpu得不到休息, 并发高频执行就会耗光CPU资源(所以需要优化SQL,减少不必要的逻辑读). CPU多线程在这种场景基本上就没啥意义了.

暂无图片 评论
暂无图片 有用 4
子衿

逻辑运算较多的程序确实可能会消耗更多的CPU资源,因为CPU需要执行更多的指令来完成这些计算。每个逻辑运算都需要一条或多条CPU指令来完成。如果一个程序中有大量的逻辑运算,那么CPU就需要执行大量的指令。涉及复杂的逻辑运算往往伴随着条件判断,当CPU无法准确预测分支走向时,它可能需要重新执行某些指令,从而浪费资源,并且频繁的逻辑运算可能导致数据访问模式变得复杂,增加了缓存未命中的可能性。每当缓存未命中时,CPU需要从内存中读取数据,这比从缓存中读取更慢。一个程序由于逻辑运算过多导致执行时间过长,操作系统可能会对其进行上下文切换,将CPU时间分配给其他任务。这种切换本身也需要一定的开销,并且频繁的上下文切换会影响整体性能,也可能导致多个线程之间出现锁竞争的情况,进一步降低程序的整体效率。

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏