mysql简单温习

77 阅读3分钟

3-6 一个sql语句是怎么执行的

mysql 执行启动器

3-7、mysql有哪些存储引擎

1、myisam

  • mysql5.5.5 之前默认的存储引擎
  • 插入数据块 b+树 功能少
  • 空间利用率高 没有事务,不会产生log,导致占用空间少,利用率真tm高
  • 不支持事务

2、innoDB

  • Mysql5.5.5之后的默认存储引擎
  • 支持事务、外键
  • 支持崩溃修复能力和并发控制

3、memory

  • 所有的数据都在内存中,速度快 cpu》内存》硬盘
  • 数据安全性差 内存特点:断电数据就扑街了

4、 archive

  • 数据压缩、空间利用率高
  • 插入速度快
  • 不支持索引,查询性能差

4-1、索引组织表

  • innodb数据表均为索引组织表
  • 索引组织表是由索引组织起来的表
  • innoDb中,表都是根据主键顺序组织存放的

4-2 b加树

1、主流索引查找算法

  • 线性查找 Linear search

    1、时间复杂度O(n) 直接和数据长度相关,随时间长度的增加而增加

    2、从第一个数据开始,逐个匹配

    缺点,效率差

  • 二分查找 binary search

    1、时间复杂度 O(log(N))

    2、取中间的值进行判断,相对线性查找而言,每一次查找都排除了一般的可能,不会随着数据的增加而增加,而是呈现log指数型增长 (这里的log是以2 为底的,例如,当数据量增大256倍时,消耗的时间只增大了8倍

    缺点: 很多时候数据都不是连续的,局域性 很大! 例如硬盘随机读取,硬盘碎片等等

  • 二叉查找树

    1、树结构 时间复杂度O(logN)

    2、使用经典的 二叉树数据结构

    3、从根节点开始查找

    4、 由于经典的二叉树结构——大于根节点 的在右边,小的再左边,导致可能无限小无限大,最后退化成链表,不能体现出二叉树的优势(相对于二分法,根节点就是中点,不会出现二分法找不到中点的问题)

    • 平衡二叉树 AVL树

    时间复杂度 O(logN)

    1、 查找时,与二叉树相同

    2、增删改时, 通过旋转操作,维护树的平衡

    3、AVL树保证了不会退化成线性查找

    缺点 : 单节点能存储的数据量太少,被数据库弃用

    eg:

    转为 :

  • b树

    由来:AVL树单节点只能存一个,太短小了,老B搞了个新的树,单节点多塞数据

    1、b树是线性数据结构和树的结合

    2、b树通过多数据节点大大降低了树的高度,高效利用磁盘

    3、b树不需要旋转就可以保证树的平衡

    缺点:每次都先从根节点遍历循环查找数据,特别是对范围查询 ,需要非常多的磁盘io

  • b+ (线性和 b的结合)

    1、b+树是由b树发展来电一种数据结构

    2、b+树的所有数据均在叶子节点上 (借鉴了b树,高效磁盘)

    3、b+树的所有数据形成了一个线性表

    4、加入了叶子节点加入了指针,区别于b 树最大的特点就是能直接从叶子节点进行范围查询遍历,大大的减小了磁盘的io时间以及次数,更快更牛逼

总结:为什么选择b+树 由来

  1. 最主流的数据库索引算法
  2. b+树有偶线性表、二叉树、b树发展而来
  3. b+树继承了线性表、AVL树(平衡二叉树的优势) ——查找速度快,范围查询性能高,磁盘利用率高

\