是什么原因在Oracle数据库中不使用绑定变量,可能会让系统陷于瘫痪?
不使用绑定变量,就是破坏Oracle的共享池机制,会让系统陷于瘫痪。这有两个原因:
1)系统要花大量CPU时间解析查询
2)系统使用大量资源来管理共享池中的对象,但它们却从不被重用
如果提交到Oracle的每个查询都是一个唯一查询(具有唯一的硬编码值),则共享池的概念就没有意义了。设计共享池是为了能反复使用查询计划。如果每个查询都是全新的,都是以前从来没有见过的查询,那么缓存它们只会增加开销,共享池反而会损害性能。