使用@Transactional注解过程中产生锁

原因:@Transactional是Spring框架提供的注解,用于注解类或方法,表示此类或方法需要在一个事务内执行。

1、一个事务中对同一张表进行了多次操作

2、在一个事务中对同一张表进行了读操作(select语句)和写操作(insert、update、delete语句)当出现这种情况时,可能会导致表被锁住,其他事务无法对它进行操作。如果需要并发地对表进行读写操作,这就会成为一个问题。

解决:

1、将读操作和写操作放在不同的事务中执行(方法拆分,使用多个@Transactional)

2、调整事务隔离级别(@Transactional(isolation = Isolation.READ_UNCOMMITTED))

3、插入、修改、删除操作进行异常捕获,然后手动设置事务回滚(不使用@Transactional注解)

 

posted @ 2023-08-31 10:32  懂得归零  阅读(1084)  评论(0编辑  收藏  举报