程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql事務與mysql儲存引擎

mysql事務與mysql儲存引擎

編輯:MySQL綜合教程

事務概念及存儲引擎

  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事務

  

mysql事務

 

  1.2事務的使用

  事務相關語句 DTL

  

mysql 事務語法

 

  1.3事務的四種特性:

  1.原子性,是一個不可分割的邏輯單元,一組sql語句,要麼都執行,要麼都不執行。

  2.隔離性,事務中的執行過程是不可見的。

  3.持久性,事務一旦提交,就不可撤銷。

  4.一致性,事務在發生之前和發生之後,數據是一致。(能量守恆)

  1.4事務的原理:

  傳統方式:

  

mysql 事務

 

  事務機制:

  

mysql事務的原理

 

  上面的例子:李彥宏給周鴻祎轉錢用事物的代碼:

  #開啟事物

  Start transaction;

  #執行的代碼

  Update account set cash=cash-1000 where id=1;

  Update account set cash+1000 where id=2;

  #提交

  commit

  # 語句出錯 可以回滾

  #rollback

  1.5事務在哪些場合下應用:

  一般來說,對於安全性要求比較的業務,建議使用事務。

  2.0 mysql存儲引擎

  何為存儲引擎?

  我們說數據庫是組織、存儲和管理數據的倉庫。那麼,數據庫存儲數據的方式,就是存儲引擎。

  在mysql中,存儲引擎是以插件的形式加載的。Mysql的存儲引擎種類繁多,對於我們來說,要熟悉兩種存儲引擎去,MyISAM和inonoDB。

  Myisam不支持事務。

  Innodb支持事務。

  全文索引在mysql5.5以前版本中,innodb是不支持的,但是5.5以後的版本支持。

  常見存儲引擎

  

mysql儲存引擎

 

  mysql默認的存儲引擎,

  在mysql5.5以前的版本:MyISAM

  在mysql5.5以後的版本:innodb

  如果我們要自己聲明存儲引擎:

  Create table()engine=myisam default charset utf8

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved