事务的每一步操作都是不可分割,不可分离的。
以下是一致性与原子性的方法:
1、古老的做法,二次提交事务
2、消息中间件MQ(分布式事务)解决数据的一致性
【原子性】:等式的两边
一般要么都执行,要么都不执行。(银行卡还信用卡)
【一致性】:读写互不等待
必须是select那一刻的数据(查询延时时间点,undo来实现)
【隔离性】:不commit可以随便玩
A、B两个用户不能同时修改同一个数据块(锁来实现)
【持久性】:commit后一定保持数据永久保存
一旦提交,数据会永久保存。(redo来实现)
事务结束于:
1、commit or rollback
2、DDL语句被执行
3、DCL语句被执行
4、用户退出会话
(正常退出提交,非正常退出回滚)
5、机器故障崩溃(回滚)
6、shutdown immediate(回滚)
测试实验模板
BEGIN
INSERT INTO EMP() VALUES();
SAVEPOINT SAVE_A;
INSERT INTO EMP() VALUES();
SAVEPOINT SAVE_B;
INSERT INTO EMP() VALUES();
SAVEPOINT SAVE_C;
INSERT INTO EMP() VALUES();
ROLLBACK TO SAVEPOINT SAVE_C;
INSERT INTO EMP() VALUES();
ROLLBACK TO SAVEPOINT SAVE_B;
COMMIT;
END