Mysql之事务

事务是什么?

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相关的数据

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文我们将围绕一下几点进行分析 什么是事务? 为什么需要隔离性? 事务的隔离级别有哪几种?怎么设置? 隔离级别的实...
    一岁一枯荣啊阅读 319评论 0 1
  • Jim Gray在1981年提出《The Transaction of Concept》由此正式拉开数据库支持事务...
    Sophie12138阅读 201评论 0 0
  • 前言 MySQL事务主要用于处理一个包含操作量比较大、复杂的业务。比如说,删除一个学生,我们除了要删除该学生的基本...
    AlicFeng阅读 2,852评论 0 1
  • MySQL之事务的四大特性 事务就是一组原子性的SQL查询,或者说一个独立的工作单元。如果数据库引擎能够成功地对数...
    一枼落知天下阅读 3,363评论 0 0
  • 事务就是一组原子性的SQL查询,或者说一个独立的工作单元。如果数据库引擎能够成功地对数据应用该组查询的全部语句,那...
    薛延祥阅读 150评论 0 0