預存程序是透過一系列的SQL語句, 根據傳入的參數(也可以沒有), 透過簡單的調用,
完成比單一SQL語句更複雜的功能, 儲存在資料庫伺服器端,只需要編譯過一次之後再使用都不需要再進行編譯。主要對儲存的過程進行控制。
事務是一系列的資料更改操作組成的一個整體。一旦交易中包含的某操作失敗或使用者中止,使用者可以控制將事務體中所有操作撤銷,並返回交易開始前的狀態。
事務中的操作是一個整體,要麼整體完成,要麼全部不做。從而保證了資料的完整性。
Mysql中,MyISAM儲存引擎不支援事務,InnoDB支援。
兩者都是資料庫中非常重要的知識。
預存程序:
優點:
1、執行速度快。尤其對於較為複雜的邏輯,減少了網路流量之間的消耗,另外比較重要的一點是預存程序只在創造時進行編譯,以後每次執行預存程序都不需再重新編譯,而一般SQL 語句每執行一次就編譯一次,所以使用預存程序可提高資料庫執行速度。 。
2、提高工作效率。寫入程式簡單,採用預存程序呼叫類,呼叫任何預存程序都只要1-2行程式碼。
3、規範設計,升級、維護方便。
4、提高系統安全性。可設定只有某使用者才具有指定預存程序的使用權。
資料量小的,或是和錢沒關係的專案不用預存程序也可以正常運作。 mysql 的預存程序還有待實際測試。如果是正式項目,建議你用 sql server 或 oracle 的預存程序。數據與數據之間打交道的話,過程會比程式來的快的多。
缺點:
程式部分功能移到了資料庫內,破壞了CVM三層結構設計
交易:
事務中可以有儲存過程儲存過程中也可以有事務。
什麼時候使用預存程序比較適合?
1、當一個業務同時對多個表進行處理的時候採用預存程序比較適合。
2、複雜的資料處理用預存程序,如有些報表處理。
3、多條件多表聯合查詢,並做分頁處理。
什麼時候使用交易比較適合?
每次使用事務,都會佔用一定的開銷。另外,事務可能會鎖定一些表的行。所以,不必要的事務會導致效能損失。這裡有一個規則,只有當操作需要的時候才會使用事務。例如,如果只是從資料庫中查詢一些記錄,或執行單一查詢,在大部分時候都不需要明確的事務,因為聲明都已經封裝在隱式的事務中。但是,正如前文提到,在多聲明更新時非常重要,因為事務能夠實際提升操作速度。同樣,如果需要在節省數毫秒時間和危害資料完整性之間做出一個選擇的話,那麼正確的答案就是保持資料清潔,不要擔心那數毫秒的時間消耗。
另外在使用事務前需要注意的是:盡可能短的保持事務。避免使用在交易中的SELECT傳回數據,除非語句依賴傳回資料。如果使用SELECT語句,只選擇需要的行,因此不要鎖定過多的資源同時保持盡可能高的效能。在架構語序的情況下,從交易中移出所有SELECT語句。這麼做是因為交易在處理的過程中會鎖定所有被操作的資料行,這會影響其他並發的sql語句的執行。
以上就是MySQL預存程序和事物的差別,希望對大家有幫助。
相關推薦:
以上是MySQL儲存過程和事務的簡單介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!