事务是什么?
事务是针对数据库数据的一系列操作,数据库应用系统通过事务集来完成对数据的存取。
事务有什么用?
事物是为了保证数据的一致性和完成性而存在的,实际上就是控制数据安全访问。
事务有哪些特性?
事务有ACID4种特性,分别为:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
原子性:指对数据的操作要么全部成功,要么全部失败。
一致性:指事务执行前后,数据状态保持一致。
隔离性:指一个事务的处理不能影响到另一个事务的处理。
持久性:指事务处理结束后,其效果在数据库中是持久化的。
事务并发可能会引发那些问题?
脏读:一个事务读取到了另一个事务未提交的数据。
不可重复读:一个事务的操作导致另一个事务前后两次读取的数据不一样。
幻读:一个事务的操作导致另一个事务前后两次查询的数据量不同。
为了解决以上问题事务设置哪些隔离级别?
为了解决事务并发引发的问题事务设置了4中隔离级别以解决各种问题,分别如下:
1.READ_UNCOMMITTED 读未提交,这个级别的隔离机制无法解决脏读、不可重复读、幻读等问题。
2.READ_COMMITTED 读提交,这个隔离级别可以解决脏读问题,但不能解决不可重复读和幻读问题。
3.REPEATABLE_READ 重复读,这个隔离级别可以解决脏读和不可重复读的问题,但仍然无法解决幻读问题。
4.SERIALIZABLE 串行化,这个是最高级别,可以解决以上三个可能出现的问题。
MySQL的默认隔离级别可以用 select @@tx_isolation;来查看,一般默认是REPEATABLE_READ。
spring事务的开启方式有几种?
有两种:编程式和声明式
编程式是程序中以写代码的形式进行事务的开启。
声明式是这xml配置文件中配置开启。