Mysql事务,存储引擎

事务

参考
参考

事务控制

方式一:set autocommit = 0

方式二:START TRANSACTION 或 BEGIN

都是手动提交commit,手动回滚rollback

Springboot中事务控制

@Transactional注解:

在Spring Boot中推荐使用@Transactional注解来申明事务。

  • 首先需要导入JDBC依赖
  • Service层中添加@Transactional注解
  • @Transactional注解既可以标注在类上也可以标注在方法上

业务场景举例:

经典的银行转账问题,Dao层两个@update,一个增一个减,Service层中不光注入了转账的Dao,还注入了积分相关的Dao,这一系列操作是一个事务,所以需要在Service层or其下对应的方法使用注解@Transactional

注解属性

常用配置参考

  • rollbackFor:触发回滚的异常类型设定
  • isolation:事务的隔离级别设定
  • timeout:超时回滚

举例:

@Transactional失效

失效参考案例
最常见的失效是:在事务内部把异常给捕获了,举个例子

应该在最外层(控制层)进行异常捕获,保证事务的开启只有一条语句

事务四大特性

并发事务问题

  • 赃读:一个事务读到另外一个事务还没有提交的数据
  • 不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读
  • 幻读:(读时没有,插时有)一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了 “幻影”。

事务的4个隔离级别

事务隔离级别越高,数据越安全,但是性能越低

存储引擎

  • 存储数据,建立索引,增删改查
  • 基于表,而非基于库
  • Mysql默认引擎是InnoDB

mysiam使用的常见被nosql:mongodb替代
memory也是一样被nosql:redis取代

查看设置引擎

查看:SHOW ENGINES
设置:CREATE TABLE xxx()ENGIENS = MyISAM

默认:InnoDB

  • 可靠性(行锁+事务+外键),高性能(B+树)
  • 支持事务,DML操作遵循ACID模型
  • 行级锁,提高并发访问性能
  • 支持外键,保证数据完整性和正确性

早期:MyISAM

面试题:


足迹,评论,点赞这种非核心数据 可以用myisam,偶尔丢点数据也没事

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值