java mysql被占用_数据库在java中占用过程杂谈

众所都知,数据库事务及联接在java操作中是一个昂贵的开销,一些程序及效率的优化在这里有很大的优化空间,但感觉数据库的开启关闭好像没有统一和最优的方案

10235-1.JPG

如上图:假设AF为java中一次会话的过程,而bc和de表示java与数据库操作占用的过程(当然在会话中可能存在不止两次的数据库操作),现在可能有下面几种情况:

1),在A之前就开启数据库及事务,在F之后提交或回滚事务和断开数据库(这可能在有些架构中是这样实现的,因为作为程序员不用考虑数据库的联接关闭及事务,统一由公用类完成)。

2),在b之时开启在c之后断开,在d之时又开启,在e之后断开,这也很常见,典型的用时开,用完就断。

3),在b之时开启,在F之后断开,其实这种是跟第一种相同,只是一种改时罢了,因为我们可以确定在一次会话中第一次用数据库,有人可能会说在e之后断开不是更好,节省了ef过程的数据库联接开销,理论上是这样的,但是这是做不到的,因为我们不知道用了这次数据库后在这次会话中就不会再用了,所以我们只能在f点结束后统一断开及处理事务。

4),可能还有其它的方案是我不清楚的。

因此,我们可以看到在4方案没有明确定义之前,只有2和3是可比较的,对于数据库占有的时间来看,2方案是肯定优于3的,但是我们清楚数据库的开启及联接本身也是一个比较大的开销,就像一个电视机,多开些可能会浪费些电,但如果总是一开一关的话,电视机也容易坏。如要有一个统一的转化参考标准:一次开销代表多少,而占用的时间又代表多少,那么我们肯定可以选出一个最优方案来,但这看来是很难做到的(看来软件的设计远没有种田来的实在啊).

个人感觉应该采取第3种方案,因为一些非数据库的处理多半是内存中的处理及运算,应该很快(但话是不能绝对的,java的一些文件处理及远程调用等可能也很慢)。

如在数据库调用方面有何见解,望多探讨,以上属个人愚见,望能抛砖引玉。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/134308/viewspace-140588/,如需转载,请注明出处,否则将追究法律责任。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值