首頁 >資料庫 >mysql教程 >mysql中事務和預存程序是什麼

mysql中事務和預存程序是什麼

青灯夜游
青灯夜游原創
2022-06-20 11:02:592652瀏覽

在mysql中,事務是使用者定義的一個資料操作序列,包含了一組資料庫操作指令;交易把所有的指令當作一個整體一起向系統提交或撤銷操作請求,即這一組資料庫命令要么都執行,要么都不執行,因此事務是一個不可分割的工作邏輯單元。預存程序是一組為了完成特定功能的SQL語句集合;一個預存程序是一個可編程的函數,它在資料庫中建立並保存,一般由SQL語句和一些特殊的控制結構所組成。

mysql中事務和預存程序是什麼

本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。

mysql中的交易

資料庫的交易(Transaction)是一種機制、是使用者定義的一個資料操作序列,包含了一組資料庫操作命令。事務把所有的命令作為一個整體一起向系統提交或撤銷操作請求,即這一組資料庫命令要么都執行,要么都不執行,因此事務是一個不可分割的工作邏輯單元。

在資料庫系統上執行並發操作時,交易是作為最小的控制單元來使用的,特別適用於多用戶同時操作的資料庫系統。例如,航空公司的訂票系統、銀行、保險公司以及證券交易系統等。

MySQL 交易主要用於處理操作量大,複雜度高的資料。比如說,在人員管理系統中,你刪除一個人員,你既需要刪除人員的基本資料,也要刪除和該人員相關的信息,如信箱,文章等等,這樣,這些資料庫操作語句就構成一個事務!

  • 在 MySQL 中只有使用了 Innodb 資料庫引擎的資料庫或表格才支援事務。

  • 交易處理可以用來維護資料庫的完整性,保證成批的 SQL 語句要麼全部執行,要麼全部不執行。

  • 交易用來管理insert、update、delete 語句

#一般來說,事務是必須滿足4個條件(ACID)::原子性(Atomicity,或稱不可分割性)、一致性(Consistency)、隔離性(Isolation,又稱獨立性)、持久性(Durability)。

  • 原子性:一個事務(transaction)中的所有操作,要麼全部完成,要麼全部不完成,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。

  • 一致性:在交易開始之前和交易結束以後,資料庫的完整性沒有被破壞。這表示寫入的資料必須完全符合所有的預設規則,這包含資料的精確度、串聯性以及後續資料庫可以自發性地完成預定的工作。

  • 隔離性:資料庫允許多個並發事務同時對其資料進行讀寫和修改的能力,隔離性可以防止多個事務並發執行時由於交叉執行而導致資料的不一致。交易隔離分為不同級別,包括讀取未提交(Read uncommitted)、讀取提交(read committed)、可重複讀取(repeatable read)和串行化(Serializable)。

  • 持久性:交易處理結束後,資料的修改就是永久的,即使係統故障也不會遺失。

mysql中的預存程序

預存程序是儲存在資料庫目錄中的一組為了完成特定功能的SQL語句集合。使用預存程序的目的是將常用或複雜的工作預先用 SQL 語句寫好並用一個指定名稱儲存起來,這個過程經過編譯和優化後儲存在資料庫伺服器中,因此稱為預存程序。當日後需要資料庫提供與已定義好的預存程序的功能相同的服務時,只需呼叫「CALL預存程序名稱」即可自動完成。

常用操作資料庫的 SQL 語句在執行的時候需要先編譯,然後再執行。預存程序則採用另一種方​​式來執行 SQL 語句。

一個預存程序是一個可程式化的函數,它在資料庫中建立並保存,一般由 SQL 語句和一些特殊的控制結構組成。當希望在不同的應用程式或平台上執行相同的特定功能時,預存程序尤其合適。

MySQL 5.0 版本以前不支援預存程序,這讓 MySQL 在應用程式上大打折扣。 MySQL 從5.0 版本開始支援預存程序,既提高了資料庫的處理速度,同時也提高了資料庫程式設計的彈性

預存程序是資料庫中的重要功能,預存程序可以用來轉換資料、資料遷移、製作報表,它類似程式語言,一次執行成功,就可以隨時被調用,完成指定的功能操作。

使用預存程序不僅可以提高資料庫的存取效率,同時也可以提高資料庫使用的安全性。

對於呼叫者來說,預存程序封裝了 SQL 語句,呼叫者無需考慮邏輯功能的特定實作過程。只是簡單呼叫即可,它可以由觸發器,其他預存程序以及Java,  Python,PHP等應用程式呼叫。

MySQL預存程序的優點

  • 通常預存程序有助於提高應用程式的效能。一旦創建,預存程序就會被編譯並儲存在資料庫中。但是,MySQL實作的預存程序略有不同。 MySQL預存程序是按需編譯的。編譯預存程序後,MySQL將其放入快取並為每個連接維護自己的預存程序快取。如果應用程式在單一連線中多次使用預存程序,則使用編譯版本,否則,預存程序的工作方式類似於查詢。

  • 預存程序有助於減少應用程式和資料庫伺服器之間的流量,因為應用程式必須只傳送預存程序的名稱和參數,而不是傳送多個冗長的SQL語句。

  • 預存程序對任何應用程式都是可重複使用且透明的。預存程序將資料庫介面公開給所有應用程序,以便開發人員不必開發預存程序中已經支援的功能。

  • 預存程序是安全的。資料庫管理員可以為存取資料庫中的預存程序的應用程式授予適當的權限,而無需為基礎資料庫表提供任何權限。

【相關推薦:mysql影片教學

以上是mysql中事務和預存程序是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn