zoukankan      html  css  js  c++  java
  • 马哥学习笔记十六——MySQL进阶之事务和隔离级别

    连接管理器:  接受请求  创建线程  认证用户  建立安全连接

    并发控制:  

      mbox:MDA

      C/S: 100   10分钟:    

        多版本并发控制: MVCC

    锁:  

      读锁:共享锁  

      写锁:独占锁   

      LOCK TABLES tb_name {READ|WRITE};   

      UNLOCK TABLES


    锁粒度:从大到小,MySQL服务器仅支持表级锁,行锁需要由存储引擎完成;
      表锁:
      页锁:(block)
      行锁:

    事务:  RDBMS: ACID (原子性,一致性,隔离性,持久性)

      MyISAM:  不支持事务

      InnoDB:

    隔离性:
      隔离级别:
        READ UNCOMMITTED:读未提交
        READ COMMITTED:读提交
        REPATABLE READ:可重读
        SERIALIZABLE:可串行

    事务:CPU, I/O
      RDBMS,
        ACID:
          Automicity:原子性,事务所引起的数据库操作,要么都完成,要么都不执行;
          Consistency:一致性(隔离状态下)
          Isolation: 隔离性
            事务调度:事务之间影响最小
            MVCC:多版本并发控制
          Durability:一旦事务成功完成,系统必须保证任何故障都不会引起事务表示出不一致性;
            1、事务提交之前就已经写出数据至持久性存储;
            2、结合事务日志完成;
              事务日志:顺序IO
              数据文件:随机IO

      事务的状态:
        活动的:active
        部分提交的:最后一条语句执行后
        失败的:提交了但未能完成
        中止的:未提交
        提交的:

    多事务同时执行:彼此之间互不影响的方式进行并行
      事务之间交互:
        通过数据集

    事务:并发执行  

      1、提高吞吐量和资源利用率  

      2、减少等待时间

    事务调度:  

      可恢复调度:任何2个事务的交叉执行都不会导致另一个事务的状态改变  

      无级联调度:

    并发控制依赖的技术手段:
      锁
      时间戳
      多版本和快照隔离

    START TANSACTION:启动
      SQL
      SQL
    COMMIT: 提交
    ROLLBACK: 回滚

    如果没有明确启动事务:  

      autocommit:能实现自动提交,每一个操作都直接提交;

      建议:明确使用事务,并且关闭自动提交;
    保存点:SAVEPOINT sid
    回滚至保存点:ROLLBACK TO sid

  • 相关阅读:
    window安装maven仓库
    python代码实现将json中所有字段四舍五入保留n位小数
    Centos搭建Git服务器,添加用户名密码实现多用户管理
    python的测试工具大全
    TypeError: cannot serialize '_io.BufferedReader' object 问题记录
    mysql数据库无法插入中文字符
    jquery的相关用法
    js相关用法
    二分法+装饰器(带返回值,无敌参数,批量执行/取消装饰器)
    网络编程三 Socket
  • 原文地址:https://www.cnblogs.com/wangyongbin/p/3729640.html
Copyright © 2011-2022 走看看