国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

簡單介紹M ySQL中的事務機制

2019-11-02 15:36:13
字體:
來源:轉載
供稿:網友

   從一個問題開始

  最近銀行這個事情鬧的比較厲害啊,很多儲戶的錢放在銀行,就不翼而飛了,而銀行還不管不問,說是用戶的責任,打官司,用戶還能輸了,這就是“社會主義”。咱還是少發牢騷,多種樹,莫談國事。

  說到銀行存錢,就不得不說一下從銀行取錢這件事情,從ATM機取錢這件簡單的事情,實際上主要分為以下幾個步驟:

  登陸ATM機,輸入密碼;

  連接數據庫,驗證密碼;

  驗證成功,獲得用戶信息,比如存款余額等;

  用戶輸入需要取款的金額,按下確認鍵;

  從后臺數據庫中減掉用戶賬戶上的對應金額;

  ATM吐出錢;

  用戶把錢拿走。

  一個簡單的取錢,主要分為以上幾步。不知道大家有沒有“天真”的想過,如果在第5步中,后臺數據庫中已經把錢減掉了,但是ATM還就是沒有吐出錢(雖然實際也發生過,但是畢竟是低概率事件),這該怎么辦?

  關于這個問題,銀行系統的開發人員早就想過了,那么他們是怎么來搞定這個問題的呢?這就要說到今天總結的事務這個概念了。

  簡單說說事務

  對于上面的取錢這個事情,如果有一步出現了錯誤,那么就取消整個取錢的動作;簡單來說,就是取錢這7步,要么都完成,要么就啥也不做。在數據庫中,事務也是這個道理。

  事務由一條或者多條sql語句組成,在事務中的操作,這些sql語句要么都執行,要么都不執行,這就是事務的目的。

  對于事務而言,它需要滿足ACID特性,下面就簡要的說說事務的ACID特性。

  A,表示原子性;原子性指整個數據庫事務是不可分割的工作單位。只有使事務中所有的數據庫操作都執行成功,整個事務的執行才算成功。事務中任何一個sql語句執行失敗,那么已經執行成功的sql語句也必須撤銷,數據庫狀態應該退回到執行事務前的狀態;

  C,表示一致性;也就是說一致性指事務將數據庫從一種狀態轉變為另一種一致的狀態,在事務開始之前和事務結束以后,數據庫的完整性約束沒有被破壞;

  I,表示隔離性;隔離性也叫做并發控制、可串行化或者鎖。事務的隔離性要求每個讀寫事務的對象與其它事務的操作對象能相互分離,即該事務提交前對其它事務都不可見,這通常使用鎖來實現;

  D,持久性,表示事務一旦提交了,其結果就是永久性的,也就是數據就已經寫入到數據庫了,如果發生了宕機等事故,數據庫也能將數據恢復。

  總結了一些事務的基本概念,在MySQL中,事務還是分為很多中的,下面就來看看到底有哪些事務。

  有哪些事務

  你能想象到嗎?就這么個破事務還會分以下這么多種:

  扁平事務;

  帶有保存點的扁平事務;

  鏈事務;

  嵌套事務;

  分布式事務。

  現在就來對這些事務從概念的層面上進行簡單的總結一下。

  扁平事務

  扁平事務是最簡單的一種,也是實際開發中使用的最多的一種事務。在這種事務中,所有操作都處于同一層次,最常見的方式如下:

  BEGIN WORK

  Operation 1

  Operation 2

  Operation 3

  ...

  Operation N

  COMMIT WORK

  或者是這種:

  BEGIN WORK

  Operation 1

  Operation 2

  Operation 3

  ...

  Operation N

  (Error Occured)

  ROLLBACK WORK

  扁平事務的主要缺點是不能提交或回滾事務的某一部分,或者分幾個獨立的步驟去提交。比如有這樣的一個例子,我從呼和浩特去深圳,為了便宜,我可能這么干:

  BEGIN WORK

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 赣州市| 兴安县| 赞皇县| 乌兰察布市| 莱州市| 佛教| 芷江| 隆德县| 屏边| 安泽县| 霍林郭勒市| 庆安县| 抚宁县| 日照市| 怀来县| 甘孜县| 乐平市| 霍州市| 正镶白旗| 玉龙| 吐鲁番市| 太康县| 嘉禾县| 白玉县| 津市市| 安岳县| 柳江县| 保康县| 宣城市| 嘉禾县| 金塔县| 通江县| 古交市| 泽库县| 鹤山市| 邻水| 城口县| 绿春县| 当雄县| 泰和县| 特克斯县|