1. 程式人生 > >會話和事務的區別

會話和事務的區別

http://blog.csdn.net/jiankunking/article/details/23818743

一個會話可以啟動多個事務,會話是session,指一次連線。
        事務是指一個操作單元,要麼成功,要麼失敗,沒有中間狀態。
        會話中可以完成多個事務。
例如:
        會話好比,在應用程式中連線資料庫要執行連線,然後會關閉,這算一次會話
        事務呢,就好比在開啟會話後要執行程式中的某一個或多個對資料庫進行的操作。
        事物的最好例子就是轉賬,從一個賬戶賺錢到另一個賬戶,兩張表的資料修改,要麼全成功,要門全變回原樣。
        會話看 v$session


        事務看 v$transaction
        這兩張檢視通過 v$session.taddr= v$transaction.addr 連線,
        事務是使資料庫和檔案系統分離的一個特性

http://blog.csdn.net/w67995822/article/details/70184151

oracle中有兩個概念,會話與事務。很多朋友可能還不是很明白這二者到底有什麼區別。

會話,即session,當你使用工具如sqlplus或者toad執行連線,連線到某個資料庫的時候,就開啟了一個會話,直到你關閉這次連線,這個會話才算結束。

事務,即transaction,是一個由多條SQL語句組成的工作邏輯單元,這些語句要麼全部執行成功,要麼全部不執行。只有commit,rollback,或者關閉工具的情況下,事務才會結束。當一個事務結束之後,下一個可執行的SQL語句自動開啟一個新的事務。事務具有4個屬性:原子性,一致性,隔離性,永續性。這裡不具體說。

以上解釋了什麼是會話和事務,接下來用一個生動的例子來進一步說明它們倆的區別,相信大家就都能明白了。

比如你去銀行辦理業務,當你坐在櫃檯前跟工作人員面對面,開始辦理業務的時候,這個時候‘會話’就開啟了,那麼這個‘會話’結束自然就是你辦理好了所有的業務離開櫃檯的時候。

在辦理業務的時候,比如你要先辦一張銀行卡,然後再往裡面存一萬塊錢,那麼這就相當於兩個事務,一個是辦理銀行卡,一個是存錢當你拿到銀行卡的時候,相當於這個事務已經commit了,事務結束。當你開始存錢的時候,一個新的事務開啟,存進去之後,第二個事務結束。

綜上,一個會話可以包含很多個事務,會話是一次對資料庫的連線,事務是一個工作單元。

個人總結:

一次會話可以包含多次事務

一次事務必然屬於同一會話