事務基礎概念

事務

事務是什么?

事務是一種機制,一個操作序列,包含了一組數據庫操作命令,并且把所有命令作為一個整體一起向系統提交或者撤銷操作請求,即統一這組命令要么一起執行,要么一起不執行

簡短概況就是:事務即是一組命令序列,他們要么一起執行;要么一起不執行;從而保證了數據的完整性和統一性。

事務的特性

acid特性:原子性,一致性,隔離性,持久性

原子性atomicity

事務是一個不可分割的整體,事務中的所有操作要么一起執行,要么一起不執行。而事務中只要有一個操作不成功,那么整個事務都將會被回滾。 ? 案例:a向b轉賬1000元,當只執行了扣款語句時斷電了,a賬號發生了扣款,b賬號卻沒有收到打款。此時事務的原子性就會來保證事務要么都執行,要么都不執行了。 ?

一致性cinsustency

事務開始前和事務執行結束后,數據庫的完整性約束沒有被破壞。
即事務開始前,數據庫的數據處于一致狀態;事務完成時,數據也必須處于一致狀態。當事務運行時,數據可能會處于不一致的狀態,但當事務完成時,數據必須回到一致狀態。

案例:
對銀行轉賬事務,不管事務成功與否,都應該再事務結束后保持前后二者存款總額與事務執行前一致

當多個用戶對同一個表進行操作時,可能會出現以下一致性問題:
1臟讀
a修改了這條數據但未提交后,此時b卻可以看到a這條未提交的修改記錄。--臟讀

2不可重復讀
a在一個事務c內,反復讀取同一個數據時。在這個事務還沒有結束時,b在另一個事務d中也訪問了這個數據。那么,再第一個事務c中讀到數次的數據,可能由于第二個事務d的修改,導致第一個事務c讀到的數據前后不一致。--不可重復讀

3幻讀
一個事務對表中的所有數據進行了修改;同時,另一個事務向這個表添加了數據,操作第一個事務的用戶會發現:表中還有一行數據沒有被修改,像中了幻覺一樣。--幻讀

4丟失更新
兩個事務同時讀取同一條記錄,a先修改記錄,b也修改記錄;當b提交后,那么a修改的結果會被b修改的結果覆蓋。--丟失更新

隔離性

隔離性確保并發執行事務的狀態保存與順序執行事務時的狀態相同

持久性

事務完成后,該事務對數據庫所做的更改會持久的保存在數據庫中,并且不會被回滾;
即不夠系統是否發生故障,事務處理的結果都是永久的。一旦事務被提交,那么事務的效果將會永久的保存在數據庫中。

總結

事務管理中,原子性是基礎,隔離性是手段,一致性是目的,持久性是結果。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/82110.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82110.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82110.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

四、【API 開發篇 (上)】:使用 Django REST Framework 構建項目與模塊 CRUD API

【API 開發篇 】:使用 Django REST Framework 構建項目與模塊 CRUD API 前言為什么選擇 Django REST Framework (DRF)?第一步:創建 Serializers (序列化器)第二步:創建 ViewSets (視圖集)第三步:配置 URLs (路由)第四步…

【北京盈達科技】GEO優化中的多模態了解

多模態數據處理領域,“模態”指的是不同類型的數據形式,每種模態都具有獨特的結構和信息表達方式。以下是12種可能的模態類型,這些模態在實際應用中可以根據具體場景進行組合和處理: 1. 文本模態 描述:以文字形式存在…

推進可解釋人工智能邁向類人智能討論總結分享

目錄 一、探索“可解釋人工智能”:AI如何從“黑箱”走向“透明大師” 二、走進可解釋人工智能:讓AI的決策變得透明 (一)幾種常見的特征導向方法 (二)像素級方法 1. 層次相關傳播(LRP&#…

【Qt】Qt 5.9.7使用MSVC2015 64Bit編譯器

環境 Qt版本:5.9.7 VS版本:VS2022 步驟 1、安裝VS2022 三個必選項: a、使用C的桌面開發 b、Windows10 SDK 版本:10.0.18362.0 c、MSVC v140 VS 2015 生成工具 Windows10 SDK安裝完成后,需要增加安裝調試器。 2…

超越OpenAI CodeX的軟件工程智能體:Jules

目前AI編碼代理(coding agent)領域正迅速崛起,Google推出了一款名為Jules的非同步編碼代理(asynchronous coding agent),主要針對專業開發者,與傳統在開發環境中直接輔助編碼的Cursor或Windsurf…

springboot使用xdoc-report包導出word

背景:項目需要使用xdoc-report.jar根據設置好的word模版,自動填入數據 導出word 框架使用 我的需求是我做一個模板然后往里面填充內容就導出我想要的word文件,問了下chatgpt還有百度,最后選用了xdocreport這個框架,主…

CodeBuddy實現pdf批量加密

本文所使用的 CodeBuddy 免費下載鏈接:騰訊云代碼助手 CodeBuddy - AI 時代的智能編程伙伴 前言 在信息爆炸的時代,PDF 格式因其跨平臺性和格式穩定性,成為辦公、學術、商業等領域傳遞信息的重要載體。從機密合同到個人隱私文檔&#xff0c…

如何在PyCharm2025中設置conda的多個Python版本

前言 體驗的最新版本的PyCharm(Community)2025.1.1,發現和以前的版本有所不同。特別是使用Anaconda中的多個版本的Python的時候。 關于基于Anaconda中多個Python版本的使用,以及對應的Pycharm(2023版)的使用,可以參考…

STM32F103 HAL多實例通用USART驅動 - 高效DMA+RingBuffer方案,量產級工程模板

導言 《STM32F103_LL庫寄存器學習筆記12.2 - 串口DMA高效收發實戰2:進一步提高串口接收的效率》前陣子完成的LL庫與寄存器版本的代碼,有一個明顯的缺點是不支持多實例化。最近,計劃基于HAL庫系統地梳理一遍bootloader程序開發。在bootloader程…

【數據結構】棧和隊列(上)

目錄 一、棧(先進后出、后進先出的線性表) 1、棧的概念及結構 2、棧的底層結構分析 二、代碼實現 1、定義一個棧 2、棧的初始化 3、入棧 3、增容 4、出棧 5、取棧頂 6、銷毀棧 一、棧(先進后出、后進先出的線性表) 1、…

Vue 3 官方 Hooks 的用法與實現原理

Vue 3 引入了 Composition API,使得生命周期鉤子(hooks)在函數式風格中更清晰地表達。本篇文章將從官方 hooks 的使用、實現原理以及自定義 hooks 的結構化思路出發,全面理解 Vue 3 的 hooks 系統。 📘 1. Vue 3 官方生…

大語言模型 17 - MCP Model Context Protocol 介紹對比分析 基本環境配置

MCP 基本介紹 官方地址: https://modelcontextprotocol.io/introduction “MCP 是一種開放協議,旨在標準化應用程序向大型語言模型(LLM)提供上下文的方式。可以把 MCP 想象成 AI 應用程序的 USB-C 接口。就像 USB-C 提供了一種…

云原生安全之PaaS:從基礎到實踐的技術指南

??「炎碼工坊」技術彈藥已裝填! 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 云原生安全之PaaS:從基礎到實踐的技術指南 一、基礎概念 PaaS(Platform as a Service)平臺 PaaS是一種云計算服務模型,為開發者提供應用程序的開發、部署和運行環境,涵…

Chrome中http被強轉成https問題

原因:2023年11月1日,chrome發布HTTPS-Upgrades功能,在用戶訪問 http:// 的舊鏈接之后,會自動嘗試跳轉到通過加密的 https:// 協議,訪問該網站。且探測到 https 服務存在也會自動改成 https。 親測兩種方案可行&#x…

Linux 操作文本文件列數據的常用命令

文章目錄 Linux 操作文本文件列數據的常用命令基本列處理命令高級列處理列數據轉換和排序列數據統計和分析 Linux 操作文本文件列數據的常用命令 Linux 提供了多種強大的命令來處理文本文件中的列數據,以下是一些最常用的命令和工具: 基本列處理命令 c…

如何理解線性判別分析(LDA)算法?

在高維數據空間中,特征變量呈指數級增長,信息分布密集且復雜。研究者在面對海量特征時,仿佛置身于一幅結構高度抽象且維度交織的多變量圖景之中,其解析與建模猶如在一幅復雜的數據宇宙圖譜中導航,既需理論框架的指引,也依賴于算法工具的精確刻畫。如何從眾多維度中篩選出…

鴻蒙UI開發——Builder函數的封裝

1、問題引入 我們在開發中可能會遇到這樣一個問題:將一個Builder修飾后的函數用變量或者數組記錄下來,在業務其他地方使用這些Builder函數。 舉個例子,有下面一段代碼: Builderfunction builderElement() {}let builderArr: Fu…

ARM筆記-ARM指令集

第三章 ARM指令集 3.1 ARM指令集簡介 ARM微處理器的ARM指令集 ,所有的指令長度都是32位 ,并且大多數指令都在一個單獨指令周期內執行。 主要特點: 指令是條件執行的ARM微處理器的指令集是加載/存儲型的在多寄存器操作指令中一次最多可以完成…

Spring Boot接口通用返回值設計與實現最佳實踐

一、核心返回值模型設計(增強版) package com.chat.common;import com.chat.util.I18nUtil; import com.chat.util.TraceUtil; import lombok.AllArgsConstructor; import lombok.Data; import lombok.Getter;import java.io.Serializable;/*** 功能: 通…

2025年上半年軟件架構師考試回憶版【持續更新】

文章目錄 案例分析1、端AI相對于云AI的優勢2、redis持久化,主從庫3、解釋器架構風格4、知識圖譜5、區塊鏈 論文1、基于事件驅動的模型2、多模型數據庫及其應用3、負載均衡設計方法4、論軟件測試理論及其應用 考試感受 2025年軟件考試架構考試于5月24日如期舉行&…