MySQL存儲過程與事務的容易介紹
發表時間:2023-07-18 來源:明輝站整理相關軟件相關文章人氣:
[摘要]存儲過程是通過一系列的SQL語句, 根據傳入的參數(也可以沒有), 通過簡單的調用, 完成比單個SQL語句更復雜的功能, 存儲在數據庫服務器端,只需要編譯過一次之后再次使用都不需要再進行編譯。主要對...
存儲過程是通過一系列的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儲存過程?mysql儲存過程簡介
同時操作不同庫里表,支持事物嗎,mysql解決辦法
以上就是MySQL存儲過程和事務的簡單介紹的詳細內容,更多請關注php中文網其它相關文章!
學習教程快速掌握從入門到精通的SQL知識。