• 事务、存储引擎


     

    目录

     事物有什么用?

    事物操作演示

     事物细节

    事物中的隔离级别​编辑

     设置隔离级别

     存储引擎


     事物有什么用?

            如上图,用以前的知识来实现这个需求是没问题的,但是如果出现了 第一条语句执行成功,第二条语句没成功的情况,那么会凭空消失100元 ,要想杜绝这个问题,就应该把这两条语句变成一组语句,要么都成功,要么都失败。这个时候就要用事物来解决。

    事物操作演示

    1. -- 事物操作演示
    2. -- 1,创建一个演示表
    3. CREATE TABLE demo
    4. (id INT,
    5. `name` VARCHAR(10))
    6. -- 2.开始事物
    7. START TRANSACTION
    8. -- 3.设置保存点
    9. SAVEPOINT a
    10. -- 4 dml操作
    11. INSERT INTO demo
    12. VALUES (1,'张三')
    13. -- 5,设置第二个保存点
    14. SAVEPOINT b
    15. -- 6.再执行dml操作,这里再插入一条消息
    16. INSERT INTO demo
    17. VALUES (2,'李四')
    18. -- 7.查询下现在的demo表
    19. SELECT * FROM demo

    回退到某个保存点

    1. -- 8.回退到保存点b
    2. ROLLBACK TO b
    3. -- 9.再次查询demo表
    4. SELECT * FROM demo

     

     这个保存点就和游戏的存档差不多,选择想要的存档进行读档操作。

    其中如果出现没法回档的情况,是因为表的引擎不是INNODB 需要在创建表的时候指定或在设计表中更改。

     事物细节

    事物中的隔离级别

     简单解释,现在有两个连接,A和B

    两个人开启事物,A连接修改数据库,但未提交,这时B查询了一下数据库,结果读到了A修改的数据,这就是脏读

    A对数据库进行修改和删除(插入),也提交了,但是b未提交自己的,正常情况下B看到的应该是开始事物时的数据库数据,结果查询数据库时却看到的是被a影响的数据库,这就是不可重复读。(幻读)。

    加锁的意思是,同一时间只能有一个连接对数据库进行超支,比如,A对数据库进行修改,但是未提交,这时B查询数据库,就会卡在查询语句上,不执行

     设置隔离级别

     事物ACID

     存储引擎

     

    使用show engines 来查看所有的引擎

    使用 alter table  `表名` engines = xxxxx 来修改表的引擎

    主要引擎的特点

     

  • 相关阅读:
    如何理解相位噪声与时间抖动的关系?
    距离的度量
    LeetCode刷题3:哈希篇
    “夭折“的AirPower将复活?iPhone开启长距离无线充电
    IDEA推送本地代码到新远程git地址
    【译】新的 MSBuild 编辑体验
    BurpSuit官方实验室之信息泄露
    Vue组件的继承用法
    Python测试题15道(含答案)
    XDU2019级保研数据统计分析
  • 原文地址:https://blog.csdn.net/hagong9/article/details/126209970