oracle 数据库中,应用程序里的连接探測语句的正确使用

Posted wzjhoutai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 数据库中,应用程序里的连接探測语句的正确使用相关的知识,希望对你有一定的参考价值。

oracle 数据库中,应用程序里的连接探測语句的正确使用

本文为原创文章。转载请注明出处:http://blog.csdn.net/msdnchina/article/details/38513765

在非常多程序里边。连接探測(或者连接检測)语句,都是用的select sysdate from dual;
这是典型的“仅仅要功能实现,无论性能怎样”的写法。事实上,连接探測语句。应该用select 1 from dual;
或许有人说,程序猿们非常辛苦,能实现功能就不错了。可是。我想说的是:换用select 1 from dual;的写法。不须要把 exist变为多表连接。因此跟业务逻辑没啥关系。

这是举手之劳的事情。

以下说一下 select sysdate from dual; 作为连接探測语句的害处:

1.添加数据库的parse负担:

这一点能够从 awr报告的“SQL ordered by Parse Calls ”能够看到。(下面基于10.2.0.5)
Parse Calls          Executions   % Total Parses     SQL Id        SQL Module         SQL Text 
3000                 3000              15%          aqswdefrgthy  JDBC Thin Client   select sysdate from dual;
可是在mos文章:故障排除:Shared Pool优化和Library Cache Latch冲突优化 (Doc ID 1523934.1)上有例如以下的描写叙述:
例2: 下面语句不用绑定变量可是也不会被觉得是literal SQL。由于这个语句能够被多次运行共享。


  SELECT sysdate FROM dual;
我的疑问是:既然说能被共享运行,为啥 Parse Calls的次数与 Executions一样多?莫非select sysdate from dual在11g上有了改进?
回头能够找一个11g的环境測试一下。



2.添加数据库server(即:os)的处理负担,理由例如以下:

The SYSDATE and SYSTIMESTAMP function simply performs a system-call to the Operating System to get the time (a "gettimeofday" call).
以上摘自:How To Add A Day, Hour, Minute And/Or Second To A Date Value? (Doc ID 1419615.1)













以上是关于oracle 数据库中,应用程序里的连接探測语句的正确使用的主要内容,如果未能解决你的问题,请参考以下文章

如何将java程序里的一段连接mysql的语句转为连接sqlserver语句。连接的是sqlser

oracle里的DBLINK是做啥的

崔华:Oracle 里的哈希连接原理解析

Oracle里的查询去重语句是怎么写得,求解,最好是有个范例。

JDBC连接Oracle

用批处理把旧系统里的数据移到新系统中,具体怎么实现