首页 > 数据库 >MySQL 事务

MySQL 事务

时间:2023-07-25 21:16:20浏览次数:35  
标签:... 事务 幻读 update 提交 MySQL commit

事务

1. 概念

事务是一组命令的集合,强调整体性。以 start transaction 或 begin 开始, 以 commit 或 callback 结束。

start transaction
update...  1
update...  2
commit 

begin
update... 3
update... 4
rollback

commit 表示提交本次事务,完成修改。(若失败,自动回滚回 begin 之前。)
rollback 表示回滚,还可设定回滚点。 savepoint xxx , rollback to xxx

2. 特征

原子性、一致性、 隔离性、持久性。

  • 原子性:表示整体事务要么全部成功,要么全部失败。
  • 一致性:表示事务前后的数据总量不变。
  • 隔离性:事务之间互不影响。
  • 持久性:事务执行成功后,写入磁盘。

3. 并发产生的问题

脏写、脏读、不可重复读、幻读

脏写

两条线程事务对一条数据做 update, 后来者会覆盖前者的 update。

脏读

一线程事务可以读到他线程已 update 但还未 commit 的数据。

不可重复读

一线程事务多次读一数据的结果不同,因他线程事务在对其数据 update 并 commit .

幻读

一线程事务对一表中的数据量多次读取,结果不同。因他线程事务在 insert 新内容到这个表并 commit.

脏读是 未提交。
不可重复读是已提交,重点看数据。
幻读是已提交,重点看数据行数。

4. 四个隔离级别

  • 读未提交:解决脏写,允许一事务读他事务的未提交的数据。
  • 读已提交:解决脏读,只允许一事务读他事务已提交的数据。
  • 可重复读:解决不可重复读,一事务读他事务已提交的数据,并且多次读取,结果不变。
  • 串行化:解决幻读,完全串行化的读写,但效率低。

四个级别依次增强。在前者的基础上解决更多的问题。

标签:...,事务,幻读,update,提交,MySQL,commit
From: https://www.cnblogs.com/zxinlog/p/17581013.html

相关文章

  • MySQL日志文件简记
    日志文件binlogbinlog主要记录了MySQL数据库执行了更改的所有操作,主要用来做主从复制,数据恢复记录模式:Statement模式:每一条回修改数据的sql都会被记录在日志中Row模式:每一行具体变更是俺都会被记录在binlog中混合模式刷盘时机选择0:由系统自行判断何时刷盘1:每次提交事务......
  • mysql 两表关联更新
    在实际情况下,其中一张表里的数据没有赋值到关联表中,可以使用下面的关联方式进行更新 把b表的name给a表的nameUPDATEtable_aaLEFTJOINtable_bbONp.id=a.uidSETa.name=b.nameWHEREa.name!='' ......
  • MySQL如何保证一直读到最新数据?
    问题:当出现某些特殊场景,一个事务A需要在未提交之前,一定要读取的是事务B提交的最新数据,该如何处理?在MySQL中,事务隔离级别:读未提交、读提交、可重复读、串行化。一、读未提交读未提交会读到其它线程未提交的脏数据,虽然可以一直读到数据,但大部分都是脏数据,所以无法保证是最新有效......
  • mysql cpu使用率高的常见原因 mysql cpu占用率过高
    文章来自:https://blog.51cto.com/u_12192/6319295简单的分为下面几个步骤来解决这个问题:1、mysql运行正常,也有可能是同步设置问题导致2、如果mysql运行正常,那就是php的一些sql语句导致问题发现,用root用户进入mysql管理mysql-uroot-p输入密码mysql:showprocesslist;语句,查......
  • MySQL 事务机制
    事务机制:事务语法:--开始事务begin;--或starttransaction;--提交commit;--回滚rollback;--保存点savepoint;事务特性:默认事务:MySQL的事务默认自动提交:在自动提交的状态下每一条SQL就是一个事务会被直接执行手动开启事务后:则所有的SQL语句都在一个事......
  • MySQL 锁机制
    数据库锁:概念:锁是计算机协调多个进程或线程并发访问某一资源的机制(避免资源争抢)分类:按粒度表级锁:锁定整个表开销小加锁快不会出现死锁锁定粒度大发生锁冲突的概率最高并发度最低数据库引擎总是一次性同时获取所有需要的锁以及总是按相同的顺序获取表锁从而避免死......
  • MySQL 日志机制
    日志机制:错误日志:当数据库无法正常启动时第一个定位错误日志数据库速度慢时也可以定位错误日志得到建议(如增大缓存池增大redologbuffer等)查询日志:没啥用就是记录查询而已应该是为了对应binlog记录修改的日志慢查询日志:捕获查询慢的情况配置:可以设置每分钟最多有......
  • MySQL 数据库连接
    数据连接:连接:MySQL驱动:mysql-connector-Java-XXX.jar数据库连接的建立及关闭是及耗费系统资源的操作,在多层结构的应用环境中,这种资源的耗费对系统性能影响尤为明显。通过DriverManager获得数据库连接的方式,一个数据库连接对象对应一个物理数据库连接,每次操作都打开一个物......
  • MySQL 容灾备份
    容灾备份:数据备份:直接对数据库进行备份:#数据库备份语句#不指定表名的话默认就是整个数据库备份#备份文件可以指定绝对路径mysqldump-u[用户名]-p[库名][表名]...>[备份文件.sql]#多个数据库备份语句mysqldump-u[用户名]-p--databases[库名][库名]......
  • MySQL 索引
    索引分析:索引概述:定义:MySQL官方对索引的定义:索引(Index)是帮助MySQL高效获取数据的数据结构。结论:索引是数据结构结构:MySQL支持多种存储引擎而各种存储引擎对索引的支持也各不相同因此MySQL数据库支持多种索引类型如BTree索引、哈希索引、全文索引等等目前大部分数据库......