MySQL : 事務處理

来源:http://www.cnblogs.com/zhqiang/archive/2017/05/31/6923266.html
-Advertisement-
Play Games

【事務】一組SQL語句操作單元,組內所有SQL語句,完成一個業務。 若整組成功,意味著組內的全部操作都成功; 反之,若其中任何一條語句失敗,意味著整個操作都失敗。 操作失敗,意味著整個過程都是沒有意義的,應使資料庫回到操作前的初始狀態。 【point】1. 失敗後,能回到開始位置; 2. 成功之前, ...


【事務】一組SQL語句操作單元,組內所有SQL語句,完成一個業務

             若整組成功,意味著組內的全部操作都成功;

             反之,若其中任何一條語句失敗,意味著整個操作都失敗。

             操作失敗,意味著整個過程都是沒有意義的,應使資料庫回到操作前的初始狀態。

【point】1. 失敗後,能回到開始位置;

         2. 成功之前,其他用戶(進程、規劃)不能看到操作內的修改。

【思路】在一組操作之前,設計一個記號(備份點)。

【實現】利用 innodb 存儲引擎的“事務日誌”功能。

             執行分為2個階段:

        1. 執行階段;

        2. 將執行結果提交給資料庫的階段;

             其中,事務日誌便是將執行階段的結果保存,若用戶選擇提交,才將執行結果提交給資料庫。

            (預設的執行方式:自動提交)

             需要關閉自動提交功能(存在一個系統變數,autocommit 可以對自動提交進行配置)

 

1 set autocommit = 0 ;  // 0 意味著關閉自動提交功能;1 意味著開啟

 

   

若成功,執行 commit 提交結果;

若失敗,執行 rollback ,回到起始位置。

--------------------------------------------------------------------------

常用的事務指令

1. start transaction 開啟事務(作用:關閉自動提交)。

    特點:若事務結束了,無論成敗,都會提交機制,回到start時的狀態(原來是autocommit,就會回到autocommit狀態)

2. commit

3. rollback

小練習

1. 指令 

2. 為什麼會有事務?

    自動提交、事務日誌。

3. 事務的特點?(ACID)

    1) 原子性:對於外界而言,事務中的SQL語句是一個整體;

    2) 一致性:在事務執行過程中,數據不受其他操作的影響;

    3) 隔離性:事務之間不會相互影響。

    4) 持久性:事務一旦提交,意味著對資料庫產生了影響,不可以再回退。


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

-Advertisement-
Play Games
更多相關文章
  • 說到Picasso,相信Android開發人員絕不陌生,它是Square公司開發的一款圖片載入神器。使用過它的coder絕對是愛不釋手:對它本身而言,輕量安全,有效載入圖片並防止OOM;對我們開發者來說,簡單方便,一行代碼搞定圖片載入。因此它備受Android開發人員的鐘愛,那麼今天我們就從源碼的角... ...
  • K-Means演算法是一種基於距離的聚類演算法,採用迭代的方法,計算出K個聚類中心,把若幹個點聚成K類。 用Spark實現K-Means演算法,首先修改pom文件,引入機器學習MLlib包: 代碼: 使用textFile()方法裝載數據集,獲得RDD,再使用KMeans.train()方法根據RDD、K值 ...
  • 介紹 使用 zabbix 的 low-level 自動發現功能完成單主機多埠的監控, 詳見low_level_discovery, 整體上監控類似 percona 的 zabbix 監控插件, 不過使用 mymonitor.pl 替換了腳本 ss_get_mysql_stats.php, 而且配置 ...
  • 計數行 直接上慄子:客戶想要知道有多少pet了, 腫麽辦?(需要用到一個COUNT(*)的函數) 操作如下: SELECT COUNT(*) FROM pet; mysql> SELECT COUNT(*) FROM pet;+ +| COUNT(*) |+ +| 9 |+ +1 row in se ...
  • 一、 創建用戶: 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 說明:username - 你將創建的用戶名, host - 指定該用戶在哪個主機上可以登陸,如果是本地用戶可用localhost, 如果想讓該用戶可以從任意遠程主 ...
  • 在MySQL 中,主要有四種類型的索引,分別為:B-Tree 索引,Hash 索引,Fulltext 索引和RTree索引 1、B-Tree 索引 B-Tree 索引是MySQL 資料庫中使用最為頻繁的索引類型,除了Archive 存儲引擎之外的其他所有的存儲引擎都支持B-Tree 索引。不僅僅在M ...
  • 2017年5月31日,天氣陰。近期事情頗多,心情比較沉重。 端午剛過,早上上課,很多同學還處在端午的疲憊狀態中沒有回過神來,當然我也不例外。端午奔波三天,加上畢設的事情,可以說身心俱疲。狀態不佳,整理了一下以前的筆記,發現很多知識點記憶不清了,甚至有些幾乎沒印象了。下麵把自己對DDL、DML和DCL ...
  • Redis 小白指南(二)- 基礎命令和五大類型:字元串、散列、列表、集合和有序集合 引言 開篇已經介紹了 Redis 安裝、GUI 和 C# 驅動等基本知識,這一篇主要是梳理一下 Redis 的 5 種類型的信息與指令。 目錄 字元串類型 散列類型 列表類型 集合類型 有序集合類型 其它命令 字元 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...