风哥双OCP认证培训(Oracle+MySQL)实战
行级锁
只在存储引擎层实现,而MySQL服务器层没有实现。
并发性好,但锁开销大
3 事务
3.1 数据库事务四特性
事务是指一组逻辑操作,它们要么一起成功,要么一起失败。
ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
原子性:事务是一个不可分割的最小单元,事务中的操作要么都发生,要么都不发生。
一致性:如果事务执行之前数据库是一个完整的状态,那么事务结束后(无论事务是否执行成功)数据库仍然是一个完整的状态。(DB中所有的数据都符合DB的约束规范)
隔离性:多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离。
持久性:事务一旦被提交,它对数据库的影响是永久性的
3.2 隔离级别
SQL标准定义了四种隔离级别:
隔离级别说明问题
读未提交(Read Uncommitted)事务A可读取事务B未提交的数据引发 脏读
读已提交(Read Committed)事务A只能读取其它已提交事务的数据;引发 不可重复读
可重复读(Repeatable Read)保证同一事务中多次读取同样的记录的结果是一致的;Mysql默认事务隔离级别解决了脏读;但引发 幻读
可串行化(Serializable)强制事务串行执行,在读的每一行数据行上加锁大量的超时和锁竞争
脏读:一个事务读取了另外一个未提交事务数据