piliskys

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            25 隨筆 :: 0 文章 :: 40 評論 :: 0 Trackbacks
          眾所都知,數據庫事務及聯接在java操作中是一個昂貴的開銷,一些程序及效率的優化在這里有很大的優化空間,但感覺數據庫的開啟關閉好像沒有統一和最優的方案,

          如上圖:假設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的一些文件處理及遠程調用等可能也很慢)。
          如在數據庫調用方面有何見解,望多探討,以上屬個人愚見,望能拋磚引玉。
          posted on 2006-03-21 08:45 霹靂火 閱讀(770) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 临清市| 南投县| 观塘区| 班玛县| 瑞昌市| 边坝县| 前郭尔| 奇台县| 峨眉山市| 四川省| 县级市| 平舆县| 通榆县| 东乡| 曲阜市| 富阳市| 大姚县| 合肥市| 普兰县| 滁州市| 石屏县| 科技| 宜昌市| 桐梓县| 南和县| 镇江市| 潮州市| 连平县| 静宁县| 揭西县| 元谋县| 绥德县| 都安| 建水县| 汽车| 日土县| 合川市| 上高县| 偏关县| 九寨沟县| 广东省|