首页 > 代码库 > 马哥学习笔记十六——MySQL进阶之事务和隔离级别

马哥学习笔记十六——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