1.2 从 ACID 到 CAP/BASE
1.事务
事务(Tranction)是指,由一系列对系统中数据进行访问与更新操作,所组成的一个逻辑执行单元。狭义上的事务是指数据库事务。
事务有四个特性。
原子性:原子性要求事务只允讲有两种状态,全部执行成功,或者全部不执行成功。
一致性:一个事务在执行前和执行后,数据库都必须从一个一致性转变到另一个一致性。
持久性:一旦某个事务提交成功,那么它对数据库所做的更改,必须永久地保存下来。
隔离性:在并发环境中,并发的事务是相互隔离的,一个事务的执行不能被其它事务干扰。
标准的sql规范,有4种数据库隔离级别:
(1)读未提交数据。允许脏读,隔离级别最低。
a事务正在处理数据,但还未提交事务,此时b事务可以读取到a事务的数据,当a事务的处理进程发生异常时,事务回滚,此时b读的就是脏数据。
(2)读已提交的数据。会出现不可重复读。
a事务处理完数据,数据值变为20,b事务访问获取值是20; C事务处理该数所,该数据变为30,b数据再次取,取出值是30,和上次访问取的值不一样。
(3)可重复读。会出现幻读。
(4)串行化。
事务不能并发执行,只能一个一个来,效率低。
数据库默认,可重复读。遇到问题具体解决,可使用悲观锁,乐观锁。
2.