美文网首页
Mysql之事务

Mysql之事务

作者: 君子愁 | 来源:发表于2019-10-17 11:17 被阅读0次

    事务是什么?

    1.事务是数据库系统区别其他一切文件系统的重要特性之一。比如有一个文件在我们修改的过程中,主机奔溃了,重启主机后,这个文件的数据是可以恢复的,保持一致性的。很多文件系统无法做到这个一致性。

    2.事务是一组具有原子性的SQL语句。具有原子性的一组SQL语句是,这组SQL里面只要有一条语句不成功,那么这组所有语句都不成功,都要回滚。

    事务四要素

    1.原子性

    具有原子性的一组SQL语句是,这组SQL里面只要有一条语句不成功,那么这组所有语句都不成功,都要回滚。

    2.一致性

    比如账户转账1000块,另外一个账户就多了1000块。这个总金额还是1000块,这个总金额这个数在事务前和事务后都是一致的。

    3.隔离性

    隔离性要求一个事务对数据库中数据的修改,在未提交完成前对于其他事务时不可见的。

    SQL中定义了4种隔离性:

    未提交读(READ UNCOMMITED) 表示一个事务修改的数据,但是这个事务还没提交。另外一个事务可以访问到这些已经被修改后的数据。

    已提交读 (READ COMMITED) oracle SQL等数据库默认的事务隔离。 表示一个事务对数据的插入和修改,在还没提交前,对其他事务是不可见的。

    可重复读 (REPEATABLE READ)  表示一个事务对数据的插入和修改,在还没提交前,对其他事务是不可见的。(他和已提交读的区别在于,先开启一个事务,查询指定的数据,但是一直不提交,然后另外一个事务对指定的这些数据进行插入和修改并且提交,那么第一个事务再次查询这些指定的数据时,还是查询不到第二个事务已经修改和插入的数据。而已提交读是可以查询到第二个事务已经修改或提交的数据的。)---innodb默认事务隔离级别

    可串行化(SERIALIZABLE) 这个才是真正的隔离性,但是隔离性太强,对每行数据都锁,所以数据库基本不用

    4.持久性

    事务提交后,数据保存在数据库,即使数据库崩溃了,已经提交的修改数据也不会丢失。

    大事务

    运行时间长,处理数据很多,这个事务就是大事务

    风险:锁定数据多,造成阻塞和锁超时。如果执行过程种,出现了问题,回滚时间也长。主从同步延迟也长(mysql都是主执行完,再同步到从,从再执行一样的语句)

    解决办法:

    1.不要一次性处理大批量数据,分多次处理

    2.移除不必要的select数据,精确select相关的数据

    相关文章

      网友评论

          本文标题:Mysql之事务

          本文链接:https://www.haomeiwen.com/subject/wcdmmctx.html