1. 程式人生 > 資料庫 >MySQL資料庫儲存過程和事務的區別講解

MySQL資料庫儲存過程和事務的區別講解

事務是保證多個SQL語句的原子型的,也就是要麼一起完成,要麼一起不完成

儲存過程是把一批SQL語句預編譯後放在伺服器上,然後可以遠端呼叫

儲存過程:

一組為了完成特定功能的SQL語句集(或者自定義資料庫操作命令集), 根據傳入的引數(也可以沒有), 通過簡單的呼叫, 完成比單個SQL語句更復雜的功能, 儲存在資料庫伺服器端,只需要編譯過一次之後再次使用都不需要再進行編譯:主要對儲存的過程進行控制。

優點:

1、執行速度快。尤其對於較為複雜的邏輯,減少了網路流量之間的消耗,另外比較重要的一點是儲存過程只在創造時進行編譯,以後每次執行儲存過程都不需再重新編譯,而一般 SQL 語句每執行一次就編譯一次,所以使用儲存過程可提高資料庫執行速度。。

2、提高工作效率。寫程式簡單,採用儲存過程呼叫類,呼叫任何儲存過程都只要1-2行程式碼。

3、規範程式設計,升級、維護方便。

4、提高系統安全性。可設定只有某使用者才具有對指定儲存過程的使用權。

資料量小的,或者和錢沒關係的專案不用儲存過程也可以正常運作。mysql 的儲存過程還有待實際測試。如果是正式專案,建議你用 sql server 或 oracle 的儲存過程。資料與資料之間打交道的話,過程會比程式來的快的多。

缺點:

程式部分功能移到了資料庫內,破壞了CVM三層結構設計

事務:

一系列的資料更改操作組成的一個整體。這些操作包括儲存過程,更改語句及其它操作。一旦事務中包含的某操作失敗或使用者中止,使用者可以控制將事務體中所有操作撤消,返回事務開始前的狀態。事務中的操作是一個整體,要麼整體完成,要麼全部不做。從而保證了資料的完整性。

事務中可以有儲存過程 儲存過程中也可以有事務。

什麼時候使用儲存過程比較適合?

1、當一個業務同時對多個表進行處理的時候採用儲存過程比較合適。

2、複雜的資料處理用儲存過程,如有些報表處理。

3、多條件多表聯合查詢,並做分頁處理。

什麼時候使用事務比較適合?

每次使用事務,都會佔用一定的開銷。另外,事務可能會鎖定一些表的行。所以,不必要的事務會導致效能損失。這裡有一個規則,只有當操作需要的時候才使用事務。例如,如果只是從資料庫中查詢一些記錄,或者執行單個查詢,在大部分時候都不需要顯式的事務,因為宣告都已經封裝在隱式的事務中。但是,正如前文提到,在多宣告更新時非常重要,因為事務能夠實際提升操作速度。同樣,如果需要在節省數毫秒時間和危害資料完整性之間做出一個選擇的話,那麼正確的答案就是保持資料清潔,不要擔心那數毫秒的時間消耗。

另外使用事務之前需要注意的是:儘可能短的保持事務。避免使用在事務中的SELECT返回資料,除非語句依賴於返回資料。如果使用SELECT語句,只選擇需要的行,因此不要鎖定過多的資源同時保持儘可能高的效能。在架構語序的情況下,從事務中移出所有SELECT語句。這麼做是因為事務在處理的過程中會鎖定所有被操作的資料行,這樣會影響其他併發的sql語句的執行。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支援。如果你想了解更多相關內容請檢視下面相關連結