week1-高性能MySQL 第一章
事务:一系列操作要么都成功,要么都失败。
acid:原子性,隔离性,持久性,一致性
原子性:都成功,或都失败
隔离性:事务间的操作是互不干扰的
持久性:事务一旦提交,会保留到数据库中。
一致性:事务前后,数据完整性保持一致。
隔离的4个等级
READ UNCOMMITTED :未提交读,事务没有提交,对其他事务都是可见的。会产生脏读。
READ COMMITTED :提交读,解决了脏读。一个事务提交前,所做的任何操作对其他事务是不可见的。产生不可重复读。一个事务中,两次相同查询,产生不一样的结果。
REPEATABLE READ:可重读。解决了不可重复读。MySQL默认的隔离等级。保证一个事务中,两次相同查询,结果一致。但会产生幻读,在事务A查询一个范围数据,事务B 在该范围插入一个新数据,事务A再次读取该范围产生幻行。InnoDB采用多版本并发控制MVCC,避免幻读。
SERIALIZABLE:可串行化 :读取每一行数据都加锁。强制事务串行执行。避免幻读。
REPEATABLE READ下,InnoDB的MVCC的运行模式,每行数据都有两个隐藏列,一列保存行创建的版本号,一列行删除的版本号。每一个事务开始,系统版本号递增。事务版本号为事务开始时系统版本号。
SELECT遵循两个条件:
a、只查找行创建版本号<=当前事务版本号
b、行的删除版本号要么没定义,要么大于当前事务版本号
INSERT
新插入行保存当前系统版本号
DELETE
删除每一行数据保存当前系统版本号作为删除标号
UPDATE
更新一行新纪录,当前版本号作为新行的创建号,旧行的删除号。
事务基本SQL
--使用set改变自动提交模式
set autocommit = 0; --关闭
set autocommit = 1; --开启
--开启事务时 应该关闭自动提交
start transaction --开启事务
commit --提交事务
rollback --回滚
savepoint 保存点名称 --设置事务保存点
rollback to savepoint 保存点名称 --回滚到保存点
release savepoint 保存点名称 --删除保存点

浙公网安备 33010602011771号