有效率的利用資源
減少記憶體、CPU運算、網路傳輸的浪費
Last updated
減少記憶體、CPU運算、網路傳輸的浪費
Last updated
在程式進入點,直接獲取之後邏輯判斷所需要用的資源,但並非所有判斷都會使用到,未使用到的資源就變成浪費,造成系統額外的負擔。
在3個IF 判斷邏輯,皆僅有一半會往下處理,進行1千次運算的情形下 提早獲得資源的程度需執行 45023 ms , PreLoader.java 不提早獲得資源的程式需執行 17026 ms , NonPreLoader.java 兩者相差約2.6倍的速度
取得資料表大量資料,但僅使用到一小部分 很多時候您不是故意取得大量資料,只是不了解某些Framework、Library的運作原理
取回所有資料,透過JDBC 游標的方式進行分頁處理後回傳資料
使用資料庫的 SQL分頁語法,取得相對應的資料
當連線並發數量 大於 Pool Size時,會出現越來越多的連線請求在等待的狀況 連線等待太久則會出現Timeout 的情形
如果你的某些應用沒有Timeout的機制,或者Timeout設的太長 這時你的系統就會出現完全無法運作的狀況 因為你的程式一直卡在等待取得Connection的狀態
每個程式的佔用Connection時間越短,就能提高Connection的利用率 原有的程式就能夠承載較高的並發數量
很多人用Transaction是為了避免髒資料的產生,但大部分的應用僅需要對一筆資料進行修改,這時使用Transaction反而變成一種浪費。
這邊提供一個非常不好的使用情境 你的程式會同時更新同一筆資料,而且長時間佔住Connection,並且從頭到尾都使用Transaction
這個時候兩個Thread 修改了同一筆資料,但在未Commit前,兩個Thread跟DB拿的資料是未修改前的 較慢送出 Commit 的程式將會出現DeadLock