什么是事务
事务是数据库中产生的一个概念,是为了确保多步操作“同时进行”。常常我们在对数据库数据进行修改的时候是多处数据同时修改,也就是说多步操作要同时进行,如果一处数据修改失败,那么所有修改都不能保存。
小tips:
从程序上来说,一步操作本身就可以拆分成许多小的步骤,例如插入一条数据到数据库本身就分为插入第一个字段、插入第二个字段等等几个小操作,那么为什么我么不能把一个事务也看成一个步骤,必须要完成这个事务才能进行下一个事务呢?为何非要提出一个事务的概念?
——我觉得原因有二:
- 实际上一个事务就是一个操作步骤,一个操作步骤也可以说成一个事务,核心就是一旦出错就不能保存这个操作的结果。
- 串行化事务时可以的,但是这就浪费了很多时间,可是如果不隔离这些事务,因为多个事务(也可以说是多个操作)操作同一个地方的时候就会起冲突。
事务——一个步骤,必须正确执行的步骤
事务的安全(锁和隔离)——能够使并行处理冲突操作正确的办法
用到“事务”的时候的输入输出?
输入:当一个(一系列)操作步骤必须正确执行,否则就不能改变现有结果的时候
输出:正确执行——改变现有结果;执行出错——回滚,不改变现有结果
用到“事务的隔离和锁”的时候的输入输出?
输入:希望提高效率,把多个操作域冲突的事务并行运行的时候。
输出:能够正确执行所有事务
特性
从特性角度看:事务有ACID四种特性——原子性、一致性、隔离性、持久性
安全隐患
从并发的同一事务的安全隐患角度看:可能会造成读和写两类安全问题
网友评论