MySQL儲存過程和事務的區別

2021-09-24 15:02:25 字數 1283 閱讀 3375

儲存過程:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

MySQL儲存函式和儲存過程的區別

儲存過程與儲存函式的區別 1 儲存函式和儲存過程統稱為儲存例程 store routine 儲存函式的限制比較多,例如不能用臨時表,只能用表變數,而儲存過程的限制較少,儲存過程的實現功能要複雜些,而函式的實現功能針對性比較強 2 返回值不同 儲存函式必須有返回值,且僅返回乙個結果值 儲存過程可以沒有...

事務和儲存過程

事務 同生共死 指訪問並可能更新資料庫中各種資料項的乙個程式執行單元 unit 也就是由多個sql語句組成,必須作為乙個整體執行 這些sql語句作為乙個整體一起向系統提交,要麼都執行 要麼都不執行 語法步驟 開始事務 begin transaction 事務提交 commit transaction...

儲存過程和事務

在儲存過程中使用事務時非常重要的,使用資料可以保持資料的關聯完整性,在sql server儲存過程中使用事務也很簡單,我們先來簡單了解一下儲存過程和事務,然後用乙個例子來簡單說明他們的用法 儲存過程 事務 以學生註冊資訊為例 create procedure dbo proc sturegister...