首页 > 数据库 >【MySQL】012-事务

【MySQL】012-事务

时间:2023-02-22 16:04:22浏览次数:45  
标签:事务 隔离 幻读 默认 012 提交 MySQL 级别

一、基本介绍

1、概念

如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败;

 

2、操作

①开启事务:start transaction;

②回滚:rollback;

③提交:commit;

案例:

【MySQL】012-事务_隔离级别

 

3、MySql数据库中事务默认自动提交

事务自动提交:一条DML(增删改)语句会自动提交一次事务;

事务手动提交:手动开启事务(start transaction),需要手动提交(commit);

修改事务的默认提交方式:

-- 查看默认的提交方式
select @@autocommit; -- 1代表自动提交 0代表手动提交

-- 修改默认的提交方式
set @@autocommit = 0;

 

二、事务的四大特征(常见面试题)

1、原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败;

2、持久性:当事务提交或回滚后,数据库会持久化地保存数据;

3、隔离性:多个事物之间相互独立;(实际上,多个事物之间会产生影响,需要进行手动隔离(类似Java多线程里面,需要锁机制))

4、一致性:事务操作前后,数据总量不变;

 

三、事务的隔离级别(了解)

1、概念:

多个事务之间是相互独立的,但是多个事务同时操作同一批数据则会引发一些问题,设置不同的隔离级别就可以解决这些问题;

 

2、存在问题

①脏读:一个事务读取到另一个事务中没有提交的数据;

②不可重复读(虚读):在同一个事务中,两次读到的数据不一样;

③幻读:一个事务(DML)数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改;

 

3、4 大隔离级别

①read uncommited:读未提交

产生的问题:脏读、不可重复读(虚读)、幻读;

②read commited:读已提交

产生的问题:不可重复读(虚读)、幻读;

③repeatable read:可重复读(MySql默认)

产生的问题:幻读;

④serializable:串行化

可以解决所有问题;

注意:隔离级别越高,则安全性越高,但效率越低;

 

4、设置数据库隔离级别

查询数据库隔离级别:

select @@tx_isolation;

设置数据库隔离级别:

set global transaction isolation level 级别字符串;

 

 

 

 

标签:事务,隔离,幻读,默认,012,提交,MySQL,级别
From: https://blog.51cto.com/u_13272819/6079190

相关文章

  • 【MySQL】009-多表操作
    一、多表之间的关系1、一对一的关系(了解)例如:人与身份证,一个人只有一张身份证,一个身份证也只能属于一个人; 2、一对多的关系(最重要)例如:部分和......
  • 【MySQL】011-多表查询
    一、概述1、查询语法select列名列表from表名列表where... 2、笛卡尔积:有两个集合A、B,取这两个集合的所有组成情况;要完成......
  • 【MySQL】010-数据库设计的三大范式
    一、范式概述范式,数据库设计范式,数据库的设计范式,是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则就......
  • 【MySQL】013-用户管理和权限管理(了解)
    一、用户管理1、添加用户CREATEUSER'用户名'@'主机名'IDENTIFIEDBY'密码'; 2、删除用户DROPUSER'用户名'@'主机名'; 3、修改用户......
  • 【MySQL】005-表的CRUD(增删改查)操作
    目录1、查询数据库中所有的表名称:二、创建1、语法格式2、MySQL中的数据类型(常用的)整型:int浮点型:double(参数1,参数2)日期(仅年月日):date日期:datetime时间戳:timest......
  • 【MySQL】006-记录的增删改操作
    一、添加数据1、语法格式:insertinto表名(列名1,列名2,列名3,...,列名n)values(值1,值2,值3,...,值n);2、注意:①列名和值要一一对应;②如果......
  • 【MySQL】007-记录的查询
    一、基础查询1、多个字段的查询select字段1,字段2...字段nfrom表名;--如果要查询所有字段,可以用*代替 2、去除重复selectdistinct字......
  • E012Web学习笔记-HTTP请求协议
    第一次复习时间:2022年3月27日11点05分一、概述1、概念HyperTextTransferProtocol超文本传输协议;2、传输协议定义了客户端和服务器端发送数据的格式;3、特......
  • sqlserver、mysql、sqlite json类型数据查询及索引优化
     sqlserver:#querySELECTSalesOrderNumber,OrderDate,JSON_VALUE(Info,'$.Customer.Name')ASCustomerNameFROMSales.SalesOrderHeaderWHEREJSON_VA......
  • MySql导出表结构并排序
    SELECTcolumn_nameas字段名称,column_typeas字段类型,column_commentas字段描述FROMinformation_schema.COLUMNSWHEREtable_schema=......