mysql事务处理

一.抛出问题:

二. 事务:

1.本质:把多个操作,打包成一个操作完成.

2.原子性:多个操作,要么全部执行成功,要么一个都不执行(回滚).

3.回滚(rollback)机制:执行到中间出错了,自动把执行成功的操作还原到最初没有执行的样子.

实现回滚:把事务中每个执行的操作记录下来,如果要回滚,按照逆操作执行.

注意:日志会在硬盘中存在,所以数据库崩溃也不会影响回滚.

4.开启事务:start transaction.

提交事务:commit(自带回滚).

手动触发回滚:rollback.

注意:一个事务必须要以commit或者rollback结尾,否则所有操作都会认为在一个事务中..

5.(重要)事务的基本特性:

a)原子性:多个操作打包成一个整体,要么全部执行成功,要么一个都不执行(回滚).

b)一致性: 事务执行前后,数据能对上(通过约束和回滚保证).

c)持久性:数据存在硬盘上,持久化存储.

d)隔离性:并发执行事务的时候,隔离性会在执行效率和数据可靠之间做出权衡.描述了同时执行事务时,相互之间的影响.

1.特点:隔离性越高,数据越可靠,但是并发性低,性能低,隔离性越低,数据越不可靠,但是并发性高,性能高.

2.并发执行的三个问题:

a).脏读问题:读到了写事务之前的中间数据.

解决方法:对写加锁(写的时候不能读).

read committed.

b)不可重复度问题:一个事务中,多次读操作,读到的数据不一样(另一个事务在修改).

解决方法:给读加锁(读的时候不能写).

repeatable read.

c)幻读问题(不可重复度的更进一步):一个事务中,读数据的时候,突然多出来几条数据,多次读数据,值相同,结果集不同.

解决幻读问题:串行化,彻底放弃并发执行事务,所有事务都是一个挨一个执行.

serializbale.

相关推荐
devpotato23 分钟前
缓存与数据库更新顺序不一致问题
java·数据库·redis
天若有情67327 分钟前
Node+MySQL小型全栈笔记项目实战课程分享
数据库·笔记·mysql
wxwx_bscxy3221 小时前
基于springboot宠物领养系统的设计与实现
数据库·spring boot·后端·spring·宠物
九月要晚安1 小时前
达梦DW与AFC对比
数据库
实战派K8S&DB2 小时前
如何在内网配置 TiDB 数据库 Agent
数据库·人工智能·分布式·tidb
实战派K8S&DB2 小时前
《基于 Dify + FastAPI + PyTiDB 搭建大模型驱动的 TiDB 智能运维 Agent》
运维·数据库·分布式·云原生·tidb·fastapi
SelectDB2 小时前
Apache Doris 5.0 年度版本前瞻(一):构建统一的多模湖仓实时分析平台
大数据·数据库·数据分析
小白学大数据2 小时前
超简单:用 Python 让 Excel 飞起来:用 openpyxl 把重复报表整理交给脚本
开发语言·数据库·python·excel
西索斯coding2 小时前
doubao-seed-2.1-turbo 调用一直 401 怎么办?pro 版同样的 Key 却正常——5 分钟排查定位指南
java·服务器·数据库·ai
袋鼠云数栈3 小时前
整库迁移与分库分表同步:批量数据搬迁的配置简化思路
jvm·数据库·oracle