数据库事务的介绍和使用
生活随笔
收集整理的這篇文章主要介紹了
数据库事务的介绍和使用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
目錄
- 事務(wù)的概念
- MySQL中的存儲引擎
- 事務(wù)的ACID屬性
- 事務(wù)的創(chuàng)建
事務(wù)的概念
事務(wù)由單獨(dú)單元的一個或者多個SQL語句組成,在這個單元中, 每一個MySQL語句都是相互依賴的。而整個單獨(dú)單元作為一個不可分割的整體, 如果單元中某條SQL語句一旦執(zhí)行失敗或產(chǎn)生錯誤,整個單元將會回滾。 所有受到影響的數(shù)據(jù)將返回事務(wù)開始以前的狀態(tài);如果單元中的所有SQL語句均執(zhí)行成功, 則事務(wù)被順利執(zhí)行。MySQL中的存儲引擎
概念: 在mysql中的數(shù)據(jù)用各種不同的技術(shù)存儲在文件(或內(nèi)存中)。 通過show engines; 來查看MySQL支持的存儲引擎。在MySQL中用的最多的存儲引擎有: innodb,myisam,memory等。其中innodb支持事務(wù), 而myisam、memory等不支持事務(wù)。事務(wù)的ACID屬性
- 原子性(Atomicity)
原子性是指事務(wù)是一個不可分割的工作單位,
事務(wù)中的操作要么都發(fā)生,要么都不發(fā)生。 - 一致性(Consistency)
事務(wù)必須使數(shù)據(jù)庫從一個一致性狀態(tài)變換到另一個一致性狀態(tài)。 - 隔離性(Isolation)
事務(wù)的隔離性是指一個事務(wù)的執(zhí)行不能被其它事務(wù)干擾,
即一個事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對并發(fā)的其他事務(wù)是隔離的,
并發(fā)執(zhí)行的各個事務(wù)之間不能互相干擾。 - 持久性(Durability)
持久性是指一個事務(wù)一旦被提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就是永久性的,
接下來的其他操作和數(shù)據(jù)庫故障不應(yīng)該對其有任何影響。
事務(wù)的創(chuàng)建
隱式事務(wù):
事務(wù)沒有明顯的開啟和結(jié)束的標(biāo)記 比如insert、update、delete語句。顯式事務(wù):
事務(wù)具有明顯的開啟和結(jié)束標(biāo)記。 前提: 必須先設(shè)置自動提交功能為禁用。 set autocommit=0;顯式事務(wù)的創(chuàng)建具體步驟如下:
步驟1: 開啟事務(wù)set autocommit=0; 或者 start transaction;步驟2: 編寫事務(wù)中的sql語句(select insert update delete) 語句1; 語句二; .....步驟三: 結(jié)束事務(wù)commit;提交事務(wù)rollback;回滾事務(wù)具體的例子:
delete 和 truncate 在事務(wù)使用時的區(qū)別
設(shè)置保存點(diǎn)
savepoint 節(jié)點(diǎn)名; //設(shè)置保存點(diǎn)
總結(jié)
以上是生活随笔為你收集整理的数据库事务的介绍和使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 消息发送 C语言版和 Visual Ba
- 下一篇: 数据库中事务并发问题