• Mysql事务学习笔记


    1. 什么是事务

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

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

    2. 特性

    1. 原子性

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

    1. 一致性

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

    1. 隔离性

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

    1. 持久性

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

    3. 隔离级别

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

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

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

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

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

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

    春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。 雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流。
  • 相关阅读:
    C# where用法解析
    C# 判断两张图片是否一致,极快速
    C# 文件过滤器filter
    C# 获取Image图片格式
    C# 中base和this关键字
    C# Http访问帮助类,支持get post请求文件下载 [
    C# 最小化到托盘,托盘右击菜单显示
    C# 导出资源文件到硬盘
    C# 线程安全与 lock锁
    DAO设计模式(转)
  • 原文地址:https://www.cnblogs.com/dengxiaobo/p/14776303.html
Copyright © 2020-2023  润新知