mysql教程 mysql事務與mysql儲存引擎

2022-03-16 09:16:06 字數 1437 閱讀 5697

事務概念及儲存引擎

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事務與鎖機制

在併發下事務會容易出現的一些問題 資料更新丟失 兩個事務同時操作一條資料,乙個事務因為異常導致資料更新丟失 髒讀 乙個失誤開始讀取了某行資料,另外乙個事務已經更新了此資料但沒有能夠及時提交。這是相當危險的,因為很可能所有的操作都被回滾。不可重複讀 乙個事務對同一行資料重複讀取兩次,但是卻得到了不同的...