通过绑定变量优化OLTP系统性能(3)

Parse        1      0.00       0.00          0          0          0           0

Execute  10015      0.13       0.11         0          0          0           0

Fetch       19      0.00       0.00          0         47          0          12

------- ------  -------- ---------- ---------- ---------- ----------  ----------

total    10035      0.13       0.12          0         47          0          12

 

Misses in library cache during parse: 1

 

    4  user  SQL statements in session.

   12  internal SQL statements in session.

   16  SQL statements in session.

********************************************************************************

Trace file: zlm11g_ora_14546_ZLM02.trc

Trace file compatibility: 11.1.0.7

Sort options: default

 

       1  session in tracefile.

       4  user  SQL statements in trace file.

      12  internal SQL statements in trace file.

      16  SQL statements in trace file.

      16  unique SQL statements in trace file.

   20156  lines in trace file.

     118  elapsed seconds in trace file.

 

分析:使用绑定变量以后,前后对比一下,资源消耗降低了非常多。运行了10000次的SQL语句,只解析了1次,执行次数虽然多了15次,但CPU时间为0.13,消耗时间为0.11,基本可以忽略不计,trace文件中只有20156行,内容非常较之前要低了非常多,zlm02.log文件仅19k大小。

 

SQL> select sql_id,sql_text,executions from v$sqlarea where sql_text like '%select * from t1 where object_id=%';

 

SQL_ID        SQL_TEXT                                           EXECUTIONS

------------- -------------------------------------------------- ----------

28gj7tsy13xq8 select * from t1 where object_id=:i                     10000 --采用绑定变量的select语句也被执行了10000次

 

总结:在OLTP等报表系统中,当我们的应用中如果执行结构非常类似的语句:如,select * from t1 where object_id='10',select * from t1 where object_id='100',……如果不加绑定变量,会大大增加硬解析的次数,10000次执行,就有10000次硬解析(第一次执行时),如果再次执行,可能会因为在shared_pool缓存中已经存在,会有一部分软解析,而使硬解析数减少,而一旦使用了绑定变量,就算把shared_pool清空掉,也只需很少的几次硬解析,就可以执行10000次查询语句,大大减少了SGA中对shared_pool的占用,提高查询性能。如果在OLAP中,使用绑定变量需要谨慎,未必一定会提高性能,具体情况还需具体分析,这种情况仅仅适合OLTP系统。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/a1fddc4378ea1ffbf83a2f27c093e7b8.html