tcl mysql_MySQL·TCL语言
TCL語言就是我們所說的事務控制語言。首先事務的定義就是:一條或者多條SQL語句所組成的一個執行單位,且該組sql語句要么執行要么都不執行。事務有四大特性(ACID),分別為:
(1).原子性(A):一個事務是不可再分割的整體,要么都執行,要么都不執行
(2).一致性(C):一個事務可以是數據從一個一致狀態轉換到另外一個一致的狀態
(3).隔離性(I):一個事務不受其他事務的影響,多個事務間互相隔離
(4).持久性(D):一個事務一旦提交了,則永久地持久化到本地
以上就是事務的四個特點,可以將事務理解成對數據的一個設定好處理過程,在執行事務時不會只執行其中一部分,要么全部執行,要么全不執行,體現原子性。執行完事務,數據前后的變化結果是一個穩定的狀態,體現了一致性。且對數據進行處理的過程中,多過處理過程是不能同時執行的,也就是事務間的執行是相互隔離的。最后是當我們執行完一個事務之后,相當于對數據的處理過程結束且保存,體現出事務的持久性。
一、事務的使用
1、事務分類:
①.隱式事務,沒有明顯的開啟和結束,本身就是一條事務可自動提交,如insert、delete等
②.顯式事務,具有明顯的開啟和結束
2、開啟(顯式)事務步驟
set autocommit = 0;
start transaction; # 可以省略
[sql 語句]
savepoint 回滾點名;# 設置回滾點
#結束事務
commit; # 提交
rollback; # 回滾
rollback to 回滾點名; # 回滾到指定的地方
二、并發事務
1、產生原因:多個事務同時操作同一數據庫的相同數據時
2、產生的問題:
①臟讀:一個事務讀取看其他事務還沒有提交的數據,讀取的的是其他事務更新后的數據
②不可重復讀:一個事務多次讀取,結果不一樣
③幻讀:一個事務讀取了其他事務還沒有提交的數據,且只是讀到其他事務插入的數據
3、解決并發問題—通過設置隔離級別來解決并發問題
read uncommitted(讀未提交):不能解決臟讀、不可重復讀、幻讀
read commited(讀已提交):可解決臟讀,不可解決不可重復讀、幻讀
repeatable read(可重復讀):可解決臟讀、不可重復讀,不能解決幻讀
serializable(串行化):可解決臟讀、不可重復讀、幻讀
其中mysql默認的隔離級別為repeatable read,盡管serializable的隔離級別最高,但是性能確實最低,簡單來講當一個事務在執行當時沒有提交,則此時想通過執行其他事務就只能等待了。
總結
以上是生活随笔為你收集整理的tcl mysql_MySQL·TCL语言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 曝OPPO新旗舰名为Find X5:首发
- 下一篇: mysql 常用权限_MySQL的权限有