摘要: 一、MySQL事务隔离级别 我们都知道数据库隔离级别有四种, (《高性能mysql》) 常用数据库默认事务隔离级别 MYSQL :默认为REPEATABLE_READ ORACLE :默认为READ_COMMITTED 脏读 Dirty Read 当A事务正在访问数据,并且对数据进行了修改,而这种修 阅读全文
posted @ 2016-04-10 10:25 三石雨 阅读(2422) 评论(0) 推荐(0) 编辑
摘要: 一、引言 我们先来看一个多线程的运行场景:时间点1 :线程1查询值是否为A 时间点2 :线程2查询值是否为A 时间点3 :线程2比较并更新值为B 时间点4 :线程2查询值是否为B 时间点5 :线程2比较并更新值为A 时间点6 :线程1比较并更新值为C 在这个线程执行场景中,2个线程交替执行。线程1在 阅读全文
posted @ 2016-04-10 10:24 三石雨 阅读(14652) 评论(0) 推荐(0) 编辑
摘要: 一、引言 Java5以来,新增加的java.util.concurrent.atomic并发包中的一些原子类,是对Java部分数据类型的原子封装,在原有数据类型的基础上,提供了原子性的操作方法,保证了线程安全。其就是建立在CAS之上的。 下面以AtomicInteger为例,来看一下是如何实现原子性 阅读全文
posted @ 2016-04-10 10:22 三石雨 阅读(396) 评论(0) 推荐(0) 编辑
摘要: 引言 为什么需要锁(并发控制) 在并发的环境中,会存在多个用户同时更新同一条数据,这时就会产生冲突。 冲突结果: 丢失更新:一个事务的更新覆盖了其它事务的更新结果,就是所谓的更新丢失。 脏读:当一个事务读取其它完成一半事务的记录时,就会发生脏读取。 因此为了解决上述问题,引入了并发控制机制。 乐观锁 阅读全文
posted @ 2016-04-10 10:15 三石雨 阅读(1770) 评论(2) 推荐(2) 编辑
摘要: 一、引言 MySQL引擎默认的锁级别: MyISAM和MEMORY采用表级锁(table-level locking)。 BDB采用页面锁(page-level locking)或表级锁,默认为页面锁。 InnoDB支持行级锁(row-level locking)和表级锁,默认为行级锁。 二、Inn 阅读全文
posted @ 2016-04-10 10:14 三石雨 阅读(4338) 评论(0) 推荐(0) 编辑
摘要: 一、引言 我们都知道,在单体应用系统中,数据库的事务具有ACID特性,其中一条保持了数据的一致性。我们来看下数据库的事务和锁。 DBMS事务通常是对数据库进行读或写的一个操作序列。它的存在包含有以下两个目的: 为数据库操作提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保 阅读全文
posted @ 2016-04-10 10:10 三石雨 阅读(447) 评论(0) 推荐(0) 编辑