Mysql事务
一.事务:一系列要发生的连续操作
1.事务操作:自动操作、收到操作
1)手动操作,操作流程
A.操作流程:
1.开启事务:告诉系统一下操作不要直接都写到数据表中,而是先存放到事务日志中去,start transaction;
2.事务操作:进行一系列操作
3.关闭事务:选择性的将事务日志中的的操作结果保存到数据表(同步)或者直接清空事务日志(清空原来所
有操作)
a.提交事务:同步数据表(操作成功) commit
b.回滚事务:清空事务表(操作失败) rollback
2.事务操作的原理:事务开启后所有操作都会保存到事务日志中去,事务日志只有在commit命令时才会将事务日志中的
操作同步到数据表中其他任何操作都会清空(rollback、断开连接、断电);
3.回滚点:当某个操作完成后会设置回滚点,如果后续的操作失败系统会跳转到回滚点。
A.设置回滚点:savepoint 回滚点名称; 返回回滚点 rollback to 回滚点名字;
2)自动事务处理:mysql中都是自动事务处理,用户操作完就会立即同步到数据表中
A.自动事务:系统通过autocommit变量控制 show variables like 'autocommit';
1.关闭自动事务提交:set autocommit=0;
3).事务的是大特性ACID
a.Atomic原子性:事物的整个操作是一个整体要么全部成功要么全部失败。
b.Consistency一致性:事务在操作的过程中数据不会发生变化
c.Isolation 隔离性:两个事务在操作的过程中彼此无影响,只有都提交事务后然会发生变化
d.durability 永久性:事务一旦提交,操作过程不可逆。
锁机制:innodb默认是行锁,但是如果在事务的处理过程中,没有用到索引系统会自动检索全表数据,
自动会升级为行锁
行锁:当前行被锁住,其他用户不能操作
表锁:当前表被锁住,其他用户无法操作