• mySql索引


     局部性原理

     时间局部性和空间局部性

     磁盘预读(预读的长度一般为页(page)的整数倍)

    • 页是存储器的逻辑块,操作系统往往将主存和磁盘存储区分割为连续的大小相等的块
    • 每个存储块称为一页(在血多操作系统中,页大小通常为4k)
    • 主存和磁盘以页为单位交换数据

    索引

     扰动函数

     

     红黑树不是严格的平衡树,是对AVL树的升级

     

     B树

     

      B+树

     

      InnoDB--B+Tree,叶子结点直接放置数据

      回表

     mysql MyISAM -- B+Tree

    聚簇索引,索引文件和数据文件放在一起

    非聚簇索引,索引文件和数据文件分开放

    • InnoDB使用聚集索引,数据根据主索引存储在叶子节点上,辅助索引的data域存储主键
    • myisam使用非聚集索引,即主索引(B+树)的叶子节点存储数据的地址,myisam可以没有主键,数据也不是存储在B+主索引的叶子节点上的

     回表

     索引分类

    • 唯一索引,不需要回表操作
    • 普通索引,回表的时候可以通过覆盖索引优化

     覆盖索引,选择id的时候,先查nameB+树,这棵树带着id,所以不需要回表

     全文索引,myisam支持,mysql5.6之后的innodb开始支持

     倒排索引,

     组合索引,索引最左匹配原则(最左前缀)

     选择合适的应用场景建立合适的索引,选择占用更小空间的索引

     explain 来查询计划

     索引下推

     

     回表之前就已经把数据进行了一次筛选

     MySQL存储引擎

     

     索引维护

    查询缓存

    mysql8.0之后,没有查询缓存了

    AST抽象语法树

    查询缓存

    日志

    服务端日志,binlog

    存储引擎端日志

    innodb,redolog,用于前滚

    wal,write ahead log

    log buffer,属于用户空间

    undo log,用于回滚

     binlog-服务端日志

    redo是innodb独有,binlog所有引擎通用

    redo是物理日志,记录某个数据页做了什么修改;binlog是逻辑日志,记录语句原始逻辑

    Redo log 两阶段提交

    论读书
    睁开眼,书在面前
    闭上眼,书在心里
  • 相关阅读:
    服务器监控
    Ubuntu16.04安装印象笔记
    在vi中打开多个文件,复制一个文件中多行到另一个文件中
    Ubuntu16.04安装和卸载MySQL 5.7
    Ubuntu16.04 sever 安装
    查看ubuntu 各系统的内核版本
    Ubuntu16.04中查看硬盘的型号和读取速度
    python 实现3-2 问候语: 继续使用练习 3-1 中的列表,但不打印每个朋友的姓名,而为每人打印一条消息。每条消息都包含相同的问候语,但抬头为相应朋友的姓名。
    线程
    并发编程
  • 原文地址:https://www.cnblogs.com/YC-L/p/14219929.html
Copyright © 2020-2023  润新知