事務概念及儲存引擎
1.0為何要事務?
先來看乙個場景,銀行轉賬匯款:
李彥巨集和周鴻?天天打架,現在讓李彥巨集給周鴻?轉款1000元
設計如下表
account表
編號(id)
使用者名稱(user)
金額(cash)
1 李彥巨集
3000
2 周鴻?
2000
傳統的做法:
mysql> update account set cash = cash -1000 where id =2;
update account set cash =cash +1000 where id=1;
不安全。比如減少李彥巨集錢的指令執行了,但是增加周鴻?錢的指令卻沒有執行成功。缺陷:
這個時候,我們就要使用mysql的事物機制。
1.1事務
1.2事務的使用
事務相關語句dtl
1.3事務的四種特性:
1.原子性,是乙個不可分割的邏輯單元,一組sql語句,要麼都執行,要麼都不執行。
2.隔離性,事務中的執行過程是不可見的。
3.永續性,事務一旦提交,就不可撤銷。
4.一致性,事務在發生之前和發生之後,資料是一致。(能量守恆)
1.4事務的原理:
傳統方式:
事務機制:
上面的例子:李彥巨集給周鴻?轉錢用事物的**:
#開啟事物
start transaction;
#執行的**
update account set cash=cash-1000 where id=1;
update account set cash+1000 where id=2;
#提交commit
# 語句出錯 可以回滾
#rollback
1.5事務在哪些場合下應用:
一般來說,對於安全性要求比較的業務,建議使用事務。
#p#mysql事務與儲存引擎-mysql儲存引擎#e#
2.0mysql儲存引擎
何為儲存引擎?
我們說資料庫是組織、儲存和管理資料的倉庫。那麼,資料庫儲存資料的方式,就是儲存引擎。
在mysql中,儲存引擎是以外掛程式的形式載入的。mysql的儲存引擎種類繁多,對於我們來說,要熟悉兩種儲存引擎去,myisam和inonodb。
myisam不支援事務。
innodb支援事務。
全文索引在mysql5.5以前版本中,innodb是不支援的,但是5.5以後的版本支援。
mysql預設的儲存引擎,
在mysql5.5以前的版本:myisam
在mysql5.5以後的版本:innodb
如果我們要自己宣告儲存引擎:
create table()engine=myisam default charset utf8
mysql教程(八) 事務詳解
a賬戶往b賬戶轉賬,a 100,b 100,如果a 100之後,突然發生如停電 宕機等情況,導致b 100沒有執行,那麼這個轉賬過程就是失敗的。原子性atomicity 要麼全成功,要麼不成功 一致性consistency 在事務開始之前與結束之後,資料庫都保持一致狀態 隔離性isolation 事...
mysql教程(八) 事務詳解
1 應用場景舉例 a賬戶往b賬戶轉賬,a 100,b 100,如果a 100之後,突然發生如停電 宕機等情況,導致b 100沒有執行,那麼這個轉賬過程就是失敗的。2 事務四個特徵 acid 原子性atomicity 要麼全成功,要麼不成功 一致性consistency 在事務開始之前與結束之後,資料...
mysql事務與鎖機制 mysql事務與鎖機制
在併發下事務會容易出現的一些問題 資料更新丟失 兩個事務同時操作一條資料,乙個事務因為異常導致資料更新丟失 髒讀 乙個失誤開始讀取了某行資料,另外乙個事務已經更新了此資料但沒有能夠及時提交。這是相當危險的,因為很可能所有的操作都被回滾。不可重複讀 乙個事務對同一行資料重複讀取兩次,但是卻得到了不同的...