• 事务


    事务具有4个特性:

    原子性:事务中所有操作视为一个原子,要么完全提交,要么完全回滚

    一致性:事务在完成时,使所有数据从一种一致性状态变更为另外一种一致性状态

    隔离性:事务与事务隔离,进行事务查看数据所处的状态,要么是被另一个并发事务修改前,要么修改后,通过锁机制实现

    持久性:事务完成后,所做修改对数据的影响是永久的,即使系统重启或出现故障扔可恢复

    InnoDB支持事务,引入了UNDO日志和REDO日志

    REDO日志:事务执行时需要将执行的事务日志写入到日志文件里,即REDO日志,当每条SQL进行数据库更新操作时,首先将REDO日志写入到缓冲区,当客户端执行COMMIT提交时,日志缓冲区的内容被刷新到磁盘

    UNDO日志:与REDO日志想法,UNDO日志主要用于事务异常时的数据回滚,就是复制事务前的数据库内容到UNDO缓冲区,然后在合适的时间内将内容刷新到磁盘,与REDO不同,磁盘上不存在单独的UNDO文件,UNDO被放在表空间对应的.ibd数据文件中

    UNDO保证了事务的原子性

    REDO保证事务的持久性

    数据不需要在事务提交前写入磁盘,而是缓存在内存中

    事务控制语句:

    开启事务:BEGIN;

    事务过程: UPDATE....

    提交事务:COMMIT;

    MYSQL事务隔离级别:4种

    设置语句:SET GLOBAL TRANSACTION ISOLATION LEVEL 未提交读(READ UNCOMMITTED)|提交读(READ COMMITTED)|可重复读(REPEATABLE READ)|可串行化(SERIALIZABLE)

    未提交读:可能脏读、不可重复读、幻读

    提交读:可能不可重复读、幻读

    (默认隔离级别)可重复读:可能幻读

    可串行化:事务隔离最高级别,通过强制事务排序,使之不可能冲突,解决幻读问题,通过对每个读的数据行上加锁实现

    脏读:事务B读取了事务A未提交的数据

    不可重复读:事务A读取了数据,事务B更新并提交了数据,事务A在此读取数据,在一个事务中前后两次读取的结果并不致,导致了不可重复读

    幻读:幻读的重点在于新增或者删除,其他类似不可重复读

  • 相关阅读:
    apns libcurl
    apns libcurl
    epoll
    epoll
    Linux服务器压测
    Linux服务器压测
    libevent
    libevent
    shell脚本
    shell脚本
  • 原文地址:https://www.cnblogs.com/zawjdbb/p/7435831.html
Copyright © 2020-2023  润新知