zoukankan      html  css  js  c++  java
  • Mysql事务学习笔记

    1. 什么是事务

    通俗的说就是:保证一组sql语句要么全部执行成功,要么全部失败,不会出现中途失败。
    并不是所有数据库引擎都支持事务,MyISAM就不支持事务。

    例如:收款100,余额+100。若收款操作执行成功后,余额增加的操作却失败了,这就出现了错误。使用事务便可防止这一错误的出现,即保证收款和余额的操作都成功后才提交事务,中途一旦执行失败则放弃此次事务的提交并回滚所有操作。

    2. 特性

    1. 原子性

    一个事务中的所有操作要么全部成功要么全部失败,不会在结束在中途某个环节。若某个操作执行失败则回滚所有操作,还原到这个事务开始前的样子。

    1. 一致性

    一个事务执行之前和执行之后数据库都必须处于一致性状态。在事务执行的过程中,只要事务未提交,就不会改变数据库的状态。提交之后事务已完成,此时数据库状态发生变化。

    1. 隔离性

    事务在执行过程中与外界完全隔离的,即使数据库发生了变更,事务中也获取不到。A 事务对数据库做的变更,在事务未提交之间,数据库中也看不到,B 事务中也看不到。
    隔离性可以防止多个事务并发执行导致数据的不一致。

    1. 持久性

    事务处理结束后,对数据的修改是永久的

    3. 隔离级别

    关于事务的特性中有一项隔离性,而隔离性实际上还可以划分为4个等级,如下:

    1. 读未提交
      一个事务未提交时,它所做的变更可以被其他事务读到。
      最低级别,这将产生4个常见问题(脏读、不可重复读、幻读、丢失更新

    2. 读已提交
      一个事务要提交后,它所做的变更才能被其他事务读到。
      解决了脏读问题,还存在3个常见问题(不可重复读、幻读、丢失更新)

    3. 可重复读
      在开始读取数据(事务开启)时,不再允许修改操作 。
      解决了脏读和不可重复读,还存在2个常见问题(幻读、丢失更新)。

    4. 串行化
      将事务按一定顺序去执行。单个事务对某一行的操作会加锁,在锁释放掉之前,其它的事务都无法对这一行的记录进行操作。必须等之前的事务执行完毕,释放锁。后面的事务又会重新加锁。

    参考:
    MySQL事务之不可重复读问题
    MySQL 什么是事务?

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。 雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流。
  • 相关阅读:
    SQL try catch处理
    JAVA学习书籍
    JAVA中jar包和war包的区别是
    tomcat webapps 是什么
    JAVA使用Gson解析json数据,实例
    java 返回json格式的数据
    目前常见的三种SQL分页方式:
    Eclipse如何新建一个tomcat_server发布web项目
    SQLHelper--java类
    编写jsp代码时出现的红色提示线错误
  • 原文地址:https://www.cnblogs.com/dengxiaobo/p/14776303.html
Copyright © 2011-2022 走看看