程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL學習筆記5-MySQL事物

MySQL學習筆記5-MySQL事物

編輯:MySQL綜合教程

MySQL事物 ACID指出每個事物型RDBMS必須遵守4個屬性,及原子性、一致性、孤立性和持久性。通過InnoDB和BDB類型表,MySQL事物能夠完全滿足事物安全的ACID測試,但不是所有類型都支持事物,如MyISAM類型表就不能支持事物,只能通過偽事物對表實現事物處理。

默認情況下InnoDB表持久性最長,MyISAM表提供部分持久。 MySQL事物的創建與存在周期 如果用戶想讓數據表支持事物處理能力,必須將當前操作數據表的類型設置為InnoDB或BDB。創建InnoDB或BDB類型的數據表,基本命令結構:

CREATE TABLE table_name(field-defintions) TYPE = INNODEB/BDB;

更改數據表類型:

ALTER TABLE table_name TYPE = INNODB/BDB;

注意:應用ALTER TABLE操作肯能會導致數據庫中數據丟失,因此為了避免非預期結果出現,在使用該命令之前,用戶需要創建一個表備份。創建事物的一般過程: 初始化事物

START TRANSACTION;創建事物

應用SELECT語句查看數據是否被正確輸入提交事物

COMMIT撤銷事物ROLLBACK1

如果執行一個回滾操作,則在START TRANSACTION命令後的所有SQL語句都將執行回滾操作。如果開啟事物後,沒有提交事物,則事物默認為自動回滾狀態,即不保存用戶之前的任何操作。事物的存在周期

事物不支持嵌套功能,當用戶第一個事物未結束又開始第二個事物時,則前一個事物會自動提交,同樣MySQL中很多命令都會隱藏執行COMMIT 命令。 MySQL行為 自動提交控制MySQL自動提交參數,可以通過AUTOCOMMIT變量更改提交模式

SET AUTOCOMMIT=0;

只有當用戶輸入COMMIT命令後,MySQL才將數據表中的資料提交到數據庫中,如果不提交事物,而終止MySQL會話,數據庫將會自動執行回滾操作。

通過 select @@autocommit; 變量來查看當前自動提交狀態事物的孤立級

SERIALIZABLE(序列化)

REPEATABLE READ (可重讀性)

READ COMMITTED (提交後讀)

READ UNCOMMITTED(未提交讀) 獲取當前事物孤立級別的命令:

SELECT @@tx_isolation;修改事物的孤立級

set global transaction isolation level 孤立級;

如果用戶要想修改事物的孤立級,必須首先獲取SUPER優先權,以便用戶可以順利執行修改操作。 事物和性能 應用小事物選擇合適的孤立級避免死鎖 MySQL偽事物 用表鎖定代替事物 為指定數據表添加鎖定

LOCK TABLES table_name lock_type,...用戶執行數據表的操作,可以添加、刪除或者更新部分數據。解鎖

UNLOCK TALBES; 應用表鎖實現偽事物

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved