zoukankan      html  css  js  c++  java
  • mysql

      关键词: 结构。 特性, redo undo ,  事务,索引。

      1。 后台线程 

        1) 主线程:  缓冲池数据 异步刷新到磁盘(脏页, 插入缓存)undo页的回收等

        2) IO线程: innodb会利用AIO 写IO请求。  线程负责处理这些线程的回调。

        3) purge线程:, undo页的回收

        4)page clearner thread: 将之前版本中脏页刷新到磁盘。

      2。特性

       1)插入缓冲: 由于聚集索引都是 大多连续的写,性能就不错, 但是 非聚集索引 (需要非唯一)确是 分散的写入,所以为了性能就有了插入缓冲池(不会超过缓冲池的1/2)

       2)double Write: 两次写,保障数据安全,对于数据写中断, 脏页刷盘的时候 一个page写了一半, 那么 这个页面 headsum 和 tailsum是 验证不通过,是损坏的页面。

              而且这个页面通过 redo log 是恢复不了的。  redo log 是 页的物理 逻辑日志, 所以需要有人 配合它 -> double write

        3) 异步IO : IO合并, 以及 提高磁盘操作 性能。

        4) 刷新临界: 刷脏页的时候 会吧整个区的页 也 都看下, 是否要刷新  [ 固态 并不是特别需要, 可能写的页不怎么脏 ]

      3:锁

        1) lock 和 latch区别?

           lock -> 事物, latch统资源锁定, 轻锁, 要求短时间释放。

        2) 解决幻读: 在 REPEATABLE READ 解决了幻读问题, 得意于 其Next-key Lock 区间锁。 也就是说区间统计时 会有区间锁定。

        3)MVCC:     在 A事物对行进行更新时会有 排它锁, 因此其他事物读取的时候其实读取的是 undo log的快照, 因为 不能读取未提交的数据。  要注意的是, 如果A,B 同时 开始事物,A提交后。 没有幻读问题。

      4:事物

        原子性: 一个操作只有 两个 状态 成功 or 失败?  不会 出现一部分数据 更新成功

        一致性:一个事务吧数据从A状态变成B状态, 不会改变数据库的完整性 约束,  比如说 银行转帐 后总存款, 和 唯一索引。

        隔离性: 每个事务的 读写事物对象 对 其他事物隔离。

        持久性: 一旦提交,就是永久的 不会出现断电了 回复不了(刷盘不同步问题)。

        1) 脏读   :  读取到了未 提交的脏数据, 可能回滚。

        2)不可重复读 :  其可以读取别人 提交的数据  可能导致两次的读取结果不一样。

        3) 幻读   : 我想把 range in(2,3) 的变成4, 但是还是有些没被更新。

        READ_UNCOMMITTED   : (可读取到 为提交的数据)   没有MVCC, 大家随便读, 没毛病。 

        READ COMMITTED    : (可读取到提交的数据)       会有不可重复读 , 幻读;

        REPEATABLE READ     : (可重复读)         会有幻读问题 。

        SERIALIZABLE      : 最高隔离级别,不允许事务并发执行,而必须串行化执行,最安全,不可能出现更新丢失、脏读、不可重复读、幻读,但是效率最低。

      log

        redo log 在数据更改后 会记录 维护      和Double Write 维护<持久性> 

        undo log 要更改 那么会记录。 方便回滚 和MVCC的实现 <原子性>.

    next-key-lock 好文:http://hedengcheng.com/?p=771    

  • 相关阅读:
    发现个atan2的正确使用方式
    Forward+ Shading架构
    fatal: unable to connect to gitee.com: gitee.com[0: 180.97.125.228]: errno=Unknown error 解决方案
    HDFS HA(高可用性)集群规划
    如何使用RTP引擎对语音编码进行转码
    关于 Angular 应用 tsconfig.json 中的 target 属性
    浅谈 Orbeon form builder 的权限控制
    关于 Angular 应用 tsconfig.json 中的 lib 属性
    orbeon form 通过 url 的方式同第三方应用集成的开发明细
    orbeon form 的配置介绍
  • 原文地址:https://www.cnblogs.com/shuly/p/8479731.html
Copyright © 2011-2022 走看看