MySQL学习笔记------事务

事务

事务是一组操作的集合,他是一个不可分割的单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败

事务操作

create table account(
    id int comment 'ID',
    name varchar(10) comment '姓名',
    money int comment '余额'
)comment '账户';
insert into account (id, name, money) VALUES (1,'张三',2000),(2,'李四',2000);
#转账操作
update account set money=money-1000 where name='张三';
update account set money=money+1000 where name='李四';

查看/设置事务提交方式

select @@autocommit;

set @@autocommit=0;#1自动提交,0手动提交

提交事务

commit;//事务提交方式设置为手动时,操作完需要提交,否则数据不发生变化,例如:

操作前

运行以下代码

#设置提交方式
set @@autocommit=0;
#转账操作
update account set money=money-1000 where name='张三';
update account set money=money+1000 where name='李四';

 表中数据为

提交后

回滚事务

rollback;

事务出现异常时,回滚数据恢复执行前

开启事务

start transaction或begin;//此时事务为手动提交

#查看提交方式
select @@autocommit;
#设置提交方式
set @@autocommit=0;
#提交
commit ;
#开启事务
start transaction ;
#回滚事务
rollback ;

 事务四大特性

原子性:事务是不可分割的最小操作单元,要么全部成功要么全部失败

一致性:事务完成时,必须使所有数据都保持一致状态

隔离性:数据库提供的隔离机制,保证事务在不受外部并发操作影响的独立环境运行

持久性:事务一旦提交,他对数据库中的数据的改变是永久性的

并发事务问题

脏读:一个事务读到另一个事务还没有提交数据

不可重复读:一个事务先后读取同一条记录,但两次读到的数据不同,称之为不可重复读(另一个事务修改并提交)

幻读:一个事务按照条件查询数据时,没有对应数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了幻影(另一个事务先插入并提交)

事务隔离级别

打错为规避

查看事务隔离级别

select@@transaction_isolation;

设置事务隔离级别

set [session|global] transaction isolation{read uncommitted | read committed | repeatable read| serializable}      // session会话,针对当前客户端有效

#查看隔离级别
select @@transaction_isolation;
#设置隔离级别
set session transaction isolation level read committed ;

 read commited可避免脏读:

未提交:

提交后:

 read committed不能避免不可重复读

其他

 其他可以用同样方法验证

repeatable read右边修改提交,左边使用commit之前,select*from account读取表数据不变

serializable只允许一次一个事务操作,只要提交完才能下一个事务操作

注意

隔离性越高,性能越差

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
狂神说MySQL是一门非常常用的数据库技术,在软件开发中被广泛应用。MySQL是一种关系型数据库管理系统,支持多线程、多用户的访问。MySQL具有很高的可伸缩性和灵活性,可以根据应用的需求进行配置和扩展。 狂神的MySQL笔记PTF非常有价值,主要包括以下几个方面: 首先,笔记中详细介绍了MySQL的安装和配置。MySQL的安装过程可能会遇到一些问题,狂神通过笔记中的步骤和注意事项,帮助读者顺利完成安装和配置,并且讲解了一些常见的配置选项的意义和用法。 其次,笔记中深入解析了MySQL的基本概念和语法。MySQL是一种SQL数据库,而SQL语言是与之交互的重要工具。狂神通过简洁明了的语言和实例演示,教会读者如何创建数据库、表格,以及如何插入、更新和删除数据等基本操作。 再次,狂神在笔记中重点讲解了MySQL的高级应用和优化技巧。MySQL在大型项目中可能面临很高的负载和并发访问,因此如何优化数据库查询性能是非常重要的。笔记中包含了索引的创建和使用、查询优化的技巧、事务管理等方面的内容,帮助读者提高数据库的效率和性能。 最后,笔记中还包含了一些MySQL与其他工具和技术的整合,比如MySQL与Java的结合、MySQL的备份与恢复、MySQL集群等。通过学习这些内容,读者可以更全面地掌握MySQL在现实项目中的应用。 总之,狂神说MySQL笔记PTF是一份非常实用且全面的学习资料,不仅帮助初学者快速入门,也能让有一定经验的开发者深入了解MySQL的各个方面。它的存在对于学习和使用MySQL的人来说是一份非常宝贵的资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值