oracle - SeanWu1977/Machine-Learning GitHub Wiki

先有 connection 才有 session (1:n) session 執行時,使用 oracle process 從以上的理論說明中可以明確感受到:SGA太小,則與資料讀取有關的部份速度會變慢;而PGA太小,則SQL運算、特別是與Order by、Group by有關的運算會變慢。那麼這與有多少程式會連接到Oracle有何關係? 程式建立Session、Session建立一個或多個Process(或一個Process對應多個Session)、每一個Process會耗用一定的PGA,但在Oracle設計中PGA的總記憶體是被參數所控制的,所以Session越多、Process越多,每一個Process所能分到的PGA就會越少,SQL的運算就會變慢!Oracle針對Process數量可以進行參數設定,而經由此參數,又可以限定所能連接的Session數,一般算法為:sessions=1.1processes + 5。 Process與Session這兩者互為一體兩面。Process設定太大,那麼就要給予更多的PGA,否則程式的SQL運算會變慢;設定太小。如果某天你的用戶連線到Oracle Instance拒絕連線,或許就是因為Process設定不夠大,導致可以連線的Session不夠多。 有關於目前Oracle instance中有多少Session,可以用以下的SQL抓取: select count() from v$session 有關於目前Oracle instance中有多少Process,可以用以下的SQL抓取: Select count(*) from v$process refer to: reference