• 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    

  • 相关阅读:
    OSGI简介
    公司僵尸帐号引发了一系列的入侵事件-细说密码强度验证的重要性
    为其他对象提供一种代理以控制对这个对象的访问-代理模式
    运用共享技术有效地支持大量细粒度的对象-享元模式
    移动APP为什么要开发两套Android和IOS-桥接模式
    非法疫苗引发的思考 -外观模式
    你们还记得张江男、张江女两张图片吗?-装饰模式
    一个程序员的蜕变(我是如何成为架构师的)
    公司新加了一台友宝自动售货机引发的思考-适配器模式
    程序员如何应对北上广高房价示例解说-建造者模式
  • 原文地址:https://www.cnblogs.com/shuly/p/8479731.html
Copyright © 2020-2023  润新知