感觉上一个数据库登录操作是瞬间的事,它有多昂贵呢?简单说,监听器收到远程连接请求后,转给server process;对于每个session数据库都会生成一个server process,要为session分配内存,要进行鉴权、审计…[@more@]
另外在一个session中,可以采用一些方法重用游标,例如PLSQL程序,所有static sql都是被cache的,重复调用时不会进行soft parse;有时可以设置session_cached_cursor参数减少soft parse。因此如果一个程序使用短连接,频繁logon/logoff,是无法用到这些特性的。这是短连接的另一坏处。
尽管这是个很简单易懂的问题,但设计人员还是应该有'连接管理'的概念,避免短连接的危害。在某个在用生产系统上,我们还是能看到短连接:
grep '22-OCT-2012 14:47' log.xml|wc
102 1220 18141
每分钟100多个连接,光是处理连接请求,可能就消耗了半个cpu。
那么应用设计中该怎样进行连接管理呢?
1) 简单的应用,或者c/s结构的应用,在启动应用(界面打开)时建立连接,应用关闭时才终止连接。这样正常情况下,一个终端1天才发起1-2次连接。
2) java程序可以使用连接池,能够在多个线程间共享。
3)目前大多数系统采用中间件(websphere、weblogic),使用连接池(connection pool),每发起请求时,从连接池中获取连接句柄,不需要不断建立新连接。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/18474/viewspace-1060740/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/18474/viewspace-1060740/