黑马day11 事宜的四大特性

黑马day11 事务的四大特性

1.事务的四大特性:一个事务具有的最基本的特性,一个设计良好的数据库可以为我们保证这四大特性。
1.1原子性:原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生要么都不发生。
1.2一致性:如果事务执行之前数据库是一个完整性的状态,那么事务结束后,无论事务是否执行成功,数据库仍然是一个完整性状态.
数据库的完整性状态:当一个数据库中的所有的数据都符合数据库中所定义的所有的约束,此时可以称数据库是一个完整性状态.
1.3隔离性:事务的隔离性是指多个用户并发访问数据库时,一个用户的事务不能被其它用户的事务所干扰,多个并发事务之间事务要隔离
1.4持久性:持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。
2.隔离性:
将数据库设计成单线程的数据库,可以防止所有的线程安全问题,自然就保证了隔离性.但是如果数据库设计成这样,那么效率就会极其低下.
如果是两个线程并发修改,一定会互相捣乱,这时必须利用锁机制防止多个线程的并发修改
如果两个线程并发查询,没有线程安全问题
如果两个线程一个修改,一个查询……
脏读:一个事务读取到另一个事务未提交的数据

不可重复读:在一个事务内读取表中的某一行数据,多次读取结果不同 — 行级别的问题
脏读
事务1:张三给李四转账100元
事务2:李四查看自己的账户

 t1:事务1:开始事务
 t2:事务1:张三给李四转账100元
 t3:事务2:开始事务
 t4:事务2:李四查看自己的账户,看到账户多出100元(脏读)
 t5:事务2:提交事务
 t6:事务1:回滚事务,回到转账之前的状态
不可重复读
事务1:酒店查看两次1048号房间状态
事务2:预订1048号房间

 t1:事务1:开始事务
 t2:事务1:查看1048号房间状态为空闲(第一次查询)
 t3:事务2:开始事务
 t4:事务2:预定1048号房间
 t5:事务2:提交事务
 t6:事务1:再次查看1048号房间状态为使用(第二次查询)
 t7:事务1:提交事务
对同一记录的两次查询结果不一致!

幻读
事务1:对酒店房间预订记录两次统计
事务2:添加一条预订房间记录

 t1:事务1:开始事务
 t2:事务1:统计预订记录100条
 t3:事务2:开始事务
 t4:事务2:添加一条预订房间记录
 t5:事务2:提交事务
 t6:事务1:再次统计预订记录为101记录
 t7:事务1:提交
  对同一表的两次查询不一致!

不可重复读和幻读的区别:
 不可重复读是读取到了另一事务的更新;
 幻读是读取到了另一事务的插入(MySQL中无法测试到幻读);

版权声明:本文为博主原创文章,未经博主允许不得转载。