Sql优化(九) 程序的可扩展性-- 短连接的危害,以及数据库连接(connection)管理...

在官方文档《oracle performance tuning guide》中提到Connecting to the database is an expensive operation that is highly unscalable。数据库的连接操作是昂贵的,且难以扩展(支持大量并发)。
感觉上一个数据库登录操作是瞬间的事,它有多昂贵呢?简单说,监听器收到远程连接请求后,转给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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值