简单判断sql解析类型
来源:互联网 发布:淘宝买踏板车可靠吗 编辑:程序博客网 时间:2024/05/16 09:01
我们知道sql解析可以分为软解析和硬解析,(我去,这都不知道百度去),由于硬解析和会消耗大小的性能,特别是对于oltp系统来说。
怎么判断解析类型呢,一般想到10046事件,但是不要完全信10046事件,原因是是10046sql_trace 在trace session的时候,默认session执行的每个SQL都将从新进行hard parse,产生一个新的child cursor,自然,这个被traced的cursor和原本应用的cursor就有可能因为dbms_auto_invalidations等原因使用不同的plan.
详细类容请查看这位大哥的博客 http://yumianfeilong.com/html/2008/12/29/309.html
那么要怎么做呢,两步搞定
首先我们查看系统里面解析比较多的sql
SQL> select sql_id ,a.SQL_TEXT,a.PARSE_CALLS,a.EXECUTIONS from v$sql a where rownum<=10 order by a.PARSE_CALLS desc ;
结果如下
SQL> select sql_id ,a.SQL_TEXT,a.PARSE_CALLS,a.EXECUTIONS from v$sql a where rownum<=10 order by a.PARSE_CALLS desc ; SQL_ID SQL_TEXT PARSE_CALLS EXECUTIONS------------- -------------------------------------------------------------------------------- ----------- ----------bjk8auuwpn00u select product0_.PRODUCT_ID as PRODUCT_ID, product0_.type as type, product0_.shi 10 100q15uyf0rn006 select product0_.PRODUCT_ID as PRODUCT_ID, product0_.type as type, product0_.shi 10 1067tqvgvch8077 select count(*) as x0_0_ from product product0_ where (product0_.isconfig!=1 )an 7 78663bbvz7408d select product0_.PRODUCT_ID as PRODUCT_ID, product0_.type as type, product0_.shi 6 696s233k75c08q select product0_.PRODUCT_ID as PRODUCT_ID, product0_.type as type, product0_.shi 5 52w48bkaawn03m select productcat0_.CATEGORY_ID as CATEGORY1_, productcat0_.opensub as opensub, 2 29r50tgqs2h053 select productcat0_.CATEGORY_ID as CATEGORY1_, productcat0_.opensub as opensub, 2 24a7wj92bbn04b select * from message 1 150ph8shy0408h select inst_id,kglnaobj,kglfnobj,kglobt03, kglobhs0+kglobhs1+kglobhs2+kglobhs3+k 1 0c6gnc2fq1w078 select product0_.PRODUCT_ID as PRODUCT_ID, product0_.type as type, product0_.shi 1 1 10 rows selected
第二部,根据sql_id,查看是否被共享
我们以最多的这个sql(sql_id=bjk8auuwpn00u )来看
select * from v$sql_shared_cursor where SQL_ID='bjk8auuwpn00u';
SQL> select * from v$sql_shared_cursor where SQL_ID='bjk8auuwpn00u'; SQL_ID ADDRESS CHILD_ADDRESS CHILD_NUMBER UNBOUND_CURSOR SQL_TYPE_MISMATCH OPTIMIZER_MISMATCH OUTLINE_MISMATCH STATS_ROW_MISMATCH LITERAL_MISMATCH SEC_DEPTH_MISMATCH EXPLAIN_PLAN_CURSOR BUFFERED_DML_MISMATCH PDML_ENV_MISMATCH INST_DRTLD_MISMATCH SLAVE_QC_MISMATCH TYPECHECK_MISMATCH AUTH_CHECK_MISMATCH BIND_MISMATCH DESCRIBE_MISMATCH LANGUAGE_MISMATCH TRANSLATION_MISMATCH ROW_LEVEL_SEC_MISMATCH INSUFF_PRIVS INSUFF_PRIVS_REM REMOTE_TRANS_MISMATCH LOGMINER_SESSION_MISMATCH INCOMP_LTRL_MISMATCH OVERLAP_TIME_MISMATCH SQL_REDIRECT_MISMATCH MV_QUERY_GEN_MISMATCH USER_BIND_PEEK_MISMATCH TYPCHK_DEP_MISMATCH NO_TRIGGER_MISMATCH FLASHBACK_CURSOR ANYDATA_TRANSFORMATION INCOMPLETE_CURSOR TOP_LEVEL_RPI_CURSOR DIFFERENT_LONG_LENGTH LOGICAL_STANDBY_APPLY DIFF_CALL_DURN BIND_UACS_DIFF PLSQL_CMP_SWITCHS_DIFF CURSOR_PARTS_MISMATCH STB_OBJECT_MISMATCH ROW_SHIP_MISMATCH PQ_SLAVE_MISMATCH TOP_LEVEL_DDL_MISMATCH MULTI_PX_MISMATCH BIND_PEEKED_PQ_MISMATCH MV_REWRITE_MISMATCH ROLL_INVALID_MISMATCH OPTIMIZER_MODE_MISMATCH PX_MISMATCH MV_STALEOBJ_MISMATCH FLASHBACK_TABLE_MISMATCH LITREP_COMP_MISMATCH------------- ---------------- ---------------- ------------ -------------- ----------------- ------------------ ---------------- ------------------ ---------------- ------------------ ------------------- --------------------- ----------------- ------------------- ----------------- ------------------ ------------------- ------------- ----------------- ----------------- -------------------- ---------------------- ------------ ---------------- --------------------- ------------------------- -------------------- --------------------- --------------------- --------------------- ----------------------- ------------------- ------------------- ---------------- ---------------------- ----------------- -------------------- --------------------- --------------------- -------------- -------------- ---------------------- --------------------- ------------------- ----------------- ----------------- ---------------------- ----------------- ----------------------- ------------------- --------------------- ----------------------- ----------- -------------------- ------------------------ --------------------bjk8auuwpn00u 000000009E56DBC0 00000000B37D0BE8 0 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N
我们看到v$sql_shared_cursor视图里面关键字段都是N,说明是可以共享的。v$sql_shared_cursor这个视图你不知道,我去,看我的博客
http://blog.csdn.net/rulev5/article/details/7083334,呵呵 ,收工了
- 简单判断sql解析类型
- SQL判断字段类型
- sql判断数据库类型
- 【Matlab】isa函数解析 类型判断函数
- underscore.js源码解析之类型判断
- c语言简单判断cpu类型
- 判断网络类型(简单版)
- SQL判断字符类型是否为数字
- 判断sql注入漏洞的类型
- Oracle sql解析类型, 软解析和硬解析浅析
- SQL语句解析类型---硬解析和软解析
- SQL语句解析类型---硬解析和软解析
- postgresql源码分析--解析sql--类型系统
- sql 存储过程 判断异常(简单)
- js判断undefined类型,undefined,null, 的区别详细解析
- js判断undefined类型,undefined,null, 的区别详细解析
- js判断undefined类型,undefined,null, 的区别详细解析
- h265 Nalu类型判断及 sps 数据解析
- 在Silverlight里面嵌入HTML/ASPX/URL/Document/SVG等
- 让电脑只能登录指定QQ号码
- 常用webservice调用
- 在WinCE下调用校准触摸屏的API和源代码
- 异常---J2SE
- 简单判断sql解析类型
- 取出字符串中的年月日
- Hibernate缓存策略详解
- 测试猜想(2)---对控件进行模糊查找测试
- 在win7 64位上安装oracle10g
- Android AsyncTask异步操作
- IDE、SCSI、SATA
- 从头开始
- 《C++程序设计语言》(特别版)第四章答案