• mysql04-事务


    为什么需要事务:

    当多线程操作一组数据时,为保持数据一致性,提出了事务的概念

    事务的特性:

    原子性(atomicity)
    事务视为不可分割的最小单位,要么都提交,不可部分提交
    一致性(consistency)
    数据从一种一致性转化成另一种一致性
    持久性(durability)
    一旦事务提交,数据永久保存到数据库中,
    隔离性(isolation)
    未提交
    已提交 
    可重复读
    串行化
     

     事务并发问题:

    脏读:事务A读了事务B更新后的数据,事务B回滚了;

    不可重复度:事务A多次读取同一数据,事务B修改了这些数据,导致事务A多次夺取的值不一样

    幻读:事务A修改了一批数据,在这个是时候事务b插入了一条数据,事务A完成后检查数据发线多了一条

    其中已提交解决了脏读;

    可重复读解决了不可重复读和幻读,通过间隙锁,间隙锁是左开又闭原则,具体看 https://www.jianshu.com/p/32904ee07e56

    查看数据库是否支持事务:

    show engines;
     
    查看 mysql 当前默认的存储引擎?
    show variables like '%storage_engine%';
     
    查看某张表的存储引擎?
    show create table 表名 ;
     
    对于表的存储结构的修改?
    建立 InnoDB 表:Create table .... type=InnoDB; Alter table table_name type=InnoDB;
     
    事务的语法:
     
    事务回滚 rollback
     
    提交 commit
     
    还原点
    savepoint
    show variables like '%autocommit%'; 自动提交事务是开启的
    set autocommit=0;
    insert into testdemo values(5,5,5);
    savepoint s1;
    insert into testdemo values(6,6,6);
    savepoint s2;
    insert into testdemo values(7,7,7);
    savepoint s3;
    select * from testdemo
    rollback to savepoint s2
    rollback
     
     
  • 相关阅读:
    Alpha冲刺
    Alpha冲刺
    抽奖系统(记一次未完成的教训)
    Alpha冲刺
    软件工程
    软工实践
    软工实践
    软工实践
    软工实践
    软工实践
  • 原文地址:https://www.cnblogs.com/xiaoshahai/p/14106195.html
Copyright © 2020-2023  润新知