📂Mysql
🔖事务
2023-02-17 16:26阅读: 19评论: 0推荐: 0

3.mysql事务

mysql事务
  • 事务:
    • 什么是事务
      • 事务是访问和更新数据库的程序执行单元,一个事务中可能包含一个或多个sql语句,且这些语句要么都执行,要么都不执行
    • mysql逻辑架构
    • img
      如上图,mysql服务器逻辑架构分为三层
      1. 处理客户端连接,授权认证
      2. 服务器层,负责查询语句的解析、优化、缓存以及内置函数的实现存储过程
      3. 存储引擎,负责mysql中数据的存储和提取,服务器层不管理事务,事务主要是存储引擎来实现的,mysql中支持事务的存储引擎有Innodb,不支持事务有myisam,memory
    • 提交和回滚
      1. mysql中默认是采取自动提交的模式
    • 特性ACID
      1. Atomicity(原子性)
        • 原子性:指事务整个过程如原子操作一样,其中的操作要么全部都执行,要么都不执行,如果事务中一个操作失败则全部回滚,退回事务前状态
      2. Consistency(一致性)
        • 一致性:事务必须使数据库从一个一致性状态变换到另一个一致性状态
      3. Isolation(隔离性)
        • 隔离性:一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰的
      4. Durability(持久性)
        • 持久性:一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的,当事务提交后数据的会持久化到硬盘,修改是永久性的
      5. 注意点
        • 按照严格的标准,只有同时满足ACID特性才是事务,Innodb默认事务隔离级别是可重复读不满足隔离性
    • Mysql的隔离级别
      • Read Uncommitted(读未提交)
        • 所有的事务都可以看到其他未提交事务的执行结果
        • 问题:脏读(读取未提交的数据)
        • img
      • Read Committed(读取提交内容)
        • 这是大多数数据库系统的默认隔离级别
        • 一个事务只能看到已经提交事务所做的改变
        • 问题:不可重复读
          • 不可重复读意味着同一事务中执行完全相同的select语句可能所看到不一样的结果
          • img
      • Repeatable Read(可重复读)
        • 这是Mysql默认事务隔离级别
        • 确保同一事务的多个实例在并发读取数据,会看到同样的数据行
        • 问题:幻读(当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行会发现有新的“幻影”行)
        • img
        • InnoDB 和 Falcon 存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了该问题。
      • Serializable(串行化)
        • 最高的隔离级别
        • 通过强制事务排序,使之不可能相互冲突,从而解决幻读问题(它是在每个读的数据行上加上共享锁。)
        • 可能会导致大量的超时和锁竞争
      • img
    • 链接:

本文作者:乐天--

本文链接:https://www.cnblogs.com/blackamon/p/17130662.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   乐天--  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起