在处理并发读或者写时,可以通过实现一个由两种类型的锁组成的锁系统来解决问题。这两种类型的锁通常被称为共享锁(shared lock)和排他锁(exclusive lock),也叫读锁(read lock)和写锁(write lock)。读锁是共享的,或者说是相互不阻塞的,写锁是排他的,也就是说一个写锁会阻塞其他的写锁和读锁。
锁粒度:在给定的资源上,锁定的数据量越少,则系统的并发程度越高。
事务就是一组原子性的SQL查询,或者说一个独立的工作单元。事务内的语句要么全部执行成功,要么全部执行失败。
事务有ACID特性,A表示原子性,C表示一致性,I表示隔离性,D表示持久性。
原子性:一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚。
一致性:数据库总是从一个一致性的状态转换到另外一个一致性的状态。
隔离性:通常来说,一个事务所做的修改在最终提交以前,对其他事务是不可见的。
持久性:一旦事务提交,则其所做的修改就会永久保存到数据库中。
隔离性其实比想象的要复杂,在SQL标准中定义了四种隔离级别,read uncommitted(未提交读)、read committed(提交读)、repeatable read(可重复读)、serializable(可串行化)
在read uncommitted(未提交读)级别,事务中的修改,即使没有提交,对