在海鲨数据库架构师精英群里,有位朋友说ORACLE 有 软软软解析. 就是把执行计划缓存在客户端里,从而避免去服务端找执行计划.
他给了个设置方法,
Weblogic console->datasource->connectionPool
Statement Cache Type =>LRU
Statement Cache Size=100
CURSOR_NUMBER = 100*20 CONNECT =2000
最后JAVA 使用要启用Prepared Statement 写法
我去AI问了下
在WebLogic中,语句缓存(Statement Cache)是一种将SQL语句缓存起来以便重复使用的机制。当一个连接从连接池中借出并使用完毕后,该连接中的所有缓存语句都会被清空。如果开启了语句缓存,则与该连接相关的语句将被缓存下来,这样在下次执行相同SQL语句时,就可以直接从缓存中获取结果而无需重新生成执行计划和语法解析等步骤,从而提高了系统的执行效率。
在WebLogic Console中,可以通过Connection Pool配置页面来设置Statement Cache Size参数的值。该参数指定了连接池中语句缓存的大小,默认值为0,表示不开启语句缓存。可以根据实际应用需求来适当调整该参数的大小,以提高系统的性能。
需要注意的是,开启语句缓存并不一定能够提高系统性能,因为语句缓存也会占用一定的内存空间,当缓存的语句数量过多或者SQL语句较为复杂时,可能会导致内存溢出等问题。因此,在开启语句缓存时需要综合考虑系统的应用场景、硬件资源等多个方面因素,以选择最优的设置方式。
这么说来确实是了,虽然O记官方没有这么说!
听吕老师说官方叫 NO parse 一般叫不解析!
不解析 换个叫法 就是软 软 软解析咯!
我查了其它客户端是否支持
JDBC 参数设置 CACHESTATEMENTSIZZE 有利于提高软软解析。虽然数据库设置SESSION级CACHE CURSOR 数字,不过因为链接池随机使用下,CACHE CURSOR命中率很低,所以无法提高软软解析
反应在AWR报告中中的 PARE TO EXECUTE % 率
DBCP <property name="poolPreparedStatements" value="true"/> <property name="maxOpenPreparedStatements" value="10"/>
官方文档说明:http://commons.apache.org/dbcp/configurtion.html
C3P0 http://www.mchange.com/projects/c3p0/index.html#configuring_statement_pooling
maxStatements 所有链接总大小
maxStatementsPerConnetion 每个链接大小
statementCacheNumDefreedCloseThreads
使用LRU清除过期STATEMNS
备库:
索引
闪回
等待事件
SGA
表管理:
其他:
Oracle DBA 技能:
ORACLE RAC 系列
ORACLE优化新常态书