说到数据库事务的特性 ,应该本能的说出acid这个单词
acid
adj. | 酸的; 酸性的; 酸味的; 尖刻的; |
n. | <化>酸; 酸味物质;
|
原子性 Atomicity
要么做,要么不做。这个例子挺多的,就像二进制0/1 开关一样,要么开,要么关,不存在什么半开。还有类似boolean类型数据,就只有true ,false 。就像誓死如归的军人,要么战死,要么凯旋,绝对不会投降。
一致性 Consistency
要求A+B = 10 ,A B 两个变量必须一致,A=1 ,B一定要等于9,A=2,B一定要等于8.还有csdn博客,你关注了我 , 那么你就是我的粉丝,数据库两头都要存储。还有银行转账这个经典的例子。
隔离型 Isolation
参考一个好博文:http://interma.cnblogs.com/archive/2005/12/25/304472.html
对数据操作,要么r,要么w,这样两个事务同时操作,数学排列组合下,就有2*2=4种情况,显然有问题。
参考下这篇讲解:http://www.oschina.net/question/258230_134502
1. 两个更新事物同时修改一条数据时(丢失更新)
2. 一个更新事物更新一条数据时,另一个数据读取了还没提交的更新(读脏)
可以理解为 这个人性子急,我都还没弄好,你这么快就催,结果就错了
3. 一个读取事物读取一条数据时另一个更新事物修改了这条数据,这时就会出现不可重现的读取(不可重复读)
我在做,还没做完,你插手干嘛,跟上面的性子急差不多
4. 一个读取事物读取时,另一个插入事物插入了一条新数据,这样就可能多读出一条数据,出现幻读(幻读)
MySQL实践四种隔离参考我的另一篇: https://blog.csdn.net/qq_26437925/article/details/80270741
持久性 Durability
一旦事务提交成功,数据修改是永存的。
参考下:http://www.cnblogs.com/Amaranthus/p/3683076.html
这个与内存,磁盘数据存储有关,还要涉及到缓存
转载下这篇文章:http://blog.csdn.net/shuaihj/article/details/14163713 对这4个特性的理解
待完。。。。