MYSQL 事務

来源:http://www.cnblogs.com/luojun4061/archive/2017/12/18/8058032.html
-Advertisement-
Play Games

事務(Transaction):ts,一般是指要做的或所做的事情。 例如:轉賬問題。 mysql> create table ac (id int primary key auto_increment, -> ac_name char(10),ac_money int); Query OK, 0 r ...


 

事務(Transaction):ts,一般是指要做的或所做的事情。

例如:轉賬問題。

mysql> create table ac (id int primary key auto_increment,
    -> ac_name char(10),ac_money int);
Query OK, 0 rows affected (0.06 sec)//創建表

 
mysql> desc ac;
+----------+----------+------+-----+---------+----------------+
| Field    | Type     | Null | Key | Default | Extra          |
+----------+----------+------+-----+---------+----------------+
| id       | int(11)  | NO   | PRI | NULL    | auto_increment |
| ac_name  | char(10) | YES  |     | NULL    |                |
| ac_money | int(11)  | YES  |     | NULL    |                |
+----------+----------+------+-----+---------+----------------+
3 rows in set (0.09 sec)

mysql> insert into ac values (null,"lucy",5000);
Query OK, 1 row affected (0.05 sec)
mysql> insert into ac values (null,"tom",2000);
Query OK, 1 row affected (0.01 sec)//插入數據

mysql> select * from ac;
+----+---------+----------+
| id | ac_name | ac_money |
+----+---------+----------+
|  1 | lucy    |     5000 |
|  2 | tom     |     2000 |
+----+---------+----------+
2 rows in set (0.00 sec)

//轉賬  lucy --->tom 1000
update ac set ac_money=ac_money-1000 where id=1;
update ac set ac_money=ac_money+1000 where id=2;

//事務的四個特性(ACID)(掌握和理解):
原子性(atomicity)。一個事務是一個不可分割的工作單位,事務中包括的諸操作要麼都做,要麼都不做。 一致性(consistency)。事務必須是使資料庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。 隔離性(isolation)。一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據對併發的其他事務是隔離的,併發執行的各個事務之間不能互相干擾。 持久性(durability)。持久性也稱永久性(permanence),指一個事務一旦提交,它對資料庫中數據的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。
//mysql 事務的操作
//1.開啟事務
mysql> begin;
Query OK, 0 rows affected (0.05 sec)
//2.事務的提交(關閉)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
//3.事務的回滾(關閉)
mysql> rollback;
Query OK, 0 rows affected (0.00 sec)
//4.保存點
mysql> savepoint c;
Query OK, 0 rows affected (0.00 sec)
//5.回滾到保存點
mysql> rollback to savepoint c;
Query OK, 0 rows affected (0.00 sec)
//6.自動提交的設置
mysql> set autocommit=0;//則需要commit操作提交
Query OK, 0 rows affected (0.05 sec)
mysql> set autocommit=1;//則不需要commit操作提交
Query OK, 0 rows affected (0.00 sec)

----------------------------存在的問題-----------
臟讀:事務T1將某一值修改,然後事務T2讀取該值,此後T1因為某種原因撤銷對該值的修改,這就導致了T2所讀取到的數據是無效的。
不可重覆讀:事務1第一次讀 A,事務2修改A為B,事務1 第二次讀到B 
幻讀:事務B以插入或刪除行等方式來修改事務A的結果集,然後再提交。

以上問題的解決//事務的隔離級別
read uncommitted | 0 未提交讀      不解決問題
read committed   | 1 已提交讀      可以解決臟讀
repeatable read  | 2 可重覆讀      避免臟讀,不可重覆讀,    
serializable     | 3 可序列化      解決一切問題(併發)
 
 
 
 
 
 

---恢復內容結束---


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前一篇博客關於SQL Server on Linux的安裝,地址:http://www.cnblogs.com/fishparadise/p/8057650.html,現在測試把Windows平臺下的一個資料庫遷移到Linux平臺下。 1. 環境 Windows: Microsoft SQL Ser ...
  • 1. 原始單據與實體之間的關係 === 可以是一對一、一對多、多對多的關係。在一般情況下,它們是一對一的關係:即一張原始單據對應且只對應一個實體。 在特殊情況下,它們可能是一對多或多對一的關係,即一張原始單證對應多個實體,或多張原始單證對應一個實體。 這裡的實體可以理解為基本表。明確這種對應關係後, ...
  • 由於工作需要,從本地Sqlite資料庫轉為MySql資料庫。遇到了一些坑,隨後又埋了。記錄下過程: 一、安裝MySql 首先上官網下載windows版的MySql.解壓。詳情是參考了幾位同鞋的文章: https://www.cnblogs.com/LxyXY/p/7708016.html MySql ...
  • 引言 在上一篇 "大數據學習系列之四 Hadoop+Hive環境搭建圖文詳解(單機)" 和之前的 "大數據學習系列之二 HBase環境搭建(單機)" 中成功搭建了Hive和HBase的環境,併進行了相應的測試。本文主要講的是如何將Hive和HBase進行整合。 Hive和HBase的通信意圖 Hiv ...
  • 一 前言 一直對InnoDB引擎的啟動過程不太瞭解,查資料整理了下InnoDB引擎啟動的過程和關閉過程,後續會整理些有關redo undo 的知識點。 二 思維導圖 三 參考文章 MySQL運維內參 ...
  • SQL Select 語句完整的執行順序:1、from 子句組裝來自不同數據源的數據;2、where 子句基於指定的條件對記錄行進行篩選;3、group by 子句將數據劃分為多個分組;4、使用聚集函數進行計算;5、使用 having 子句篩選分組;6、計算所有的表達式;7、select 的欄位;8... ...
  • 序列 是資料庫生成的一系列數值 1 2 3 4 用於實現id 自增長使用 mySql 實現id 自增長 設置 auto_increment oracle資料庫 藉助於序列 創建序列語法 create sequence 序列名 序列的屬性 nextval --下一個值 currval --當前值 特點... ...
  • 這個系列大致想跟大家分享以下篇章: 1、mongo 3.4分片集群系列之一:淺談分片集群 2、mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3、mongo 3.4分片集群系列之三:搭建分片集群--哈希分片 + 安全 4、mongo 3.4分片集群系列之四:搭建分片集群--哈希分片 + ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...