MYSQL關於事務的SQL

事務

事務:

 一個最小的不可再分的工作單元,通常一個事務對應一個完整的業務
 一個完整的業務通常需要批量的DML(data manupulation language)語句共同聯合完成(insert, update, delete)
 事務只和DML語句有關,或者說DML語句纔有事務。這個和業務邏輯有關,業務邏輯不同,DML語句的個數不同

事務(ACID)的四大特徵:

 原子性(Atomicity),也稱爲不可分割性. 事務是最小的單位,不可再分
 一致性(Consistency),在事務開始和事務結束之後,數據庫的完整性沒有被破壞.事務要求所有的DML語句操作的時候必須保證同時成功或者同時失敗
 隔離性(Isolation),數據庫允許多個併發事務同時對其數據進行讀寫和修改的能力,隔離性可以防止多個事務併發執行時由於交叉執行而導致數據的不一致
 持久性(Durability),事務處理結束後,對數據的修改就是永久的,即便系統故障也不會丟失

事務級別:

READ UNCOMMITTED讀未提交
READ COMMITTED讀已提交
REPEATABLE READ可重複讀
SERIALIZABLE串行化

eg:

-- 事務 -- MariaDB和MYSQL開啓事務 -- START TRANSACTION / BEGIN -- SQL Server 中標識如下 -- BEGIN TRANSACTION -- END TRANSACTION -- 語句之間的SQL必須完全執行或者完全不執行 BEGIN ; DELETE FROM custcopy WHERE cust_id = '1000000001'; ROLLBACK; -- 設置佔位符(保留點) -- SAVEPOINT delete1; -- REALASE SAVEPOINT -- ROLLBACK TO delete1; 

eg:

-- 查看數據庫當前的進程 SHOW PROCESSLIST; -- 查看運行的所有事務 SELECT * FROM information_schema.INNODB_TRX; -- 當前出現的鎖 SELECT * FROM information_schema.INNODB_LOCKS; -- 鎖等待的對應關係 SELECT * FROM information_schema.INNODB_LOCK_WAITS; -- MYSQL的自動提交默認是開啓的可以使用SET @@AUTOCOMMIT = 0;關閉 SET @@AUTOCOMMIT = 1; SELECT @@AUTOCOMMIT; -- MYSQL的引擎檢查,可以檢查一下數據庫引擎是不是InnoDB -- MYSQL5.5.5以前默認是MylSAM, 以後默認是InnoDB SHOW ENGINES; -- 查看錶使用的存儲引擎 show table status from db_name where name='table_name'; SHOW TABLE STATUS FROM sams where name='custcopy'; -- 修改表的存儲引擎 alter table table_name engine=innodb; 

注: 參考SQL必知必會

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章