关于SQL优化

说句大废话,那就是“合理的平衡各种资源的使用,内存,cpu,io 等等”。这也是很有道理的,但是实际就不好做了,如何平衡呢?

 

具体点的么,通过比较,应该是响应时间做为主要的评判因素了。但是可能由于一些不确定的因素,可能会出现:这次跑的快,不等于下次也跑的快了。
那就要根据表的数据量的变化,确定一个比较合理的执行计划了,主要还是要降低逻辑读为调优的目标,其实物理读意义不大,一个sql语句第一次执行物理读肯定是很大的,到了第2次物理读也许就很小了。

 

某高人说:

在数据库整体上来讲,是要降低 物理读
而对于单条 sql 来讲,是以逻辑读的降低为标准的
道理很简单,对于单条sql来说,如果反复运行,物理读决定于 data buffer 的大小 ,第一次运行 和 第二次运行也是不一样的。
但比较稳定的是 逻辑读。 如果以物理读为标准,那难道物理读为0的sql就是好sql 了?如果sql的逻辑读都良好,那数据库整体的物理读降下来也是很自然的事情

 

高人又说:

临时段是不会生产redo 的
buffer gets 就可以理解为 对 buffer cache 中 buffer 的访问 buffer*次 ,也可以看做访问的 buffer数量,当然可能存在着一个buffer被访问多次的情况
至于 buffer gets,如果访问的块不在内存中自然就产生物理读,可物理读并不影响buffer gets ,因为对数据的访问最终是在内存中完成的,虽然额外地有物理读。
db block gets 仅仅表示 类似dml这类操作去访问数据块,dml 操作数据最终也是在访问buffer的过程中完成的啊,而 consistent gets 表示类似 select这样的查询去访问buffer。 更严格来说,是叫 current mode and query mode .这是oracle的读一致性的特点决定的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值