Mysql


MySQL

TODO

索引分类

按索引存储分类:

  1. 聚簇索引: innodb, 索引和数据在一起
  2. 非聚簇:myisam , 分开存储索引和数据

按使用方式分类:

  1. 主键索引:

  2. 唯一索引:

  3. 普通索引:

  4. 组合索引: 何时失效?

    1. like ‘%xxx’ , % 开头
    2. 中间某个值使用了范围查询
    3. 使用函数的时候
    4. 使用表达式 where id + 1 = 4; 不可以, where id = 3+1; 可以
    5. 类型不匹配的时候, 涉及隐式转换
    6. 数据量特别大的时候
    7. or 在某些情况下会失效
  5. 全文索引:


create table test(id bigint primary key, name varchar(10) unique, age int);
  • 回表: 先去普通索引查一波, 得到主键, 然后回表查找数据

  • 索引覆盖: 假设 name 为普通索引, 现在查找 id, name , 则数据已经一次查到,不需要再回表,这种情况就叫索引覆盖, using index

  • 最左匹配:

  • 索引下推:通过 explain 查看执行计划时, using index condition 表示使用了下推

    • 谓词下推:

image-20200516213116277

MTS , 主从复制延时

引擎

索引

B+ Tree


优化

explain


=======

MySQL

常用引擎

InnoDB, MyISAM,CSV,Memory 等 show engines;

默认引擎: show variables like '%storage_engien';

查看某张表使用的引擎: show table status from database where name = "tablename";


MyISAM

不支持事务, 不支持行级锁,支支持并发插入的表锁,可用于高负载的 select, 使用 B+ Tree

InnoDB

支持事务,回滚, 支持外键,支持行级锁, 使用 B+ Tree


同一个 DB ,支持不同的 engine ,不同表可以使用不用的 engine 。可以根据表的特性,来指定不同的 engine 。

索引

B+ Tree, Hash, 全文索引等


文章作者: peifeng
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 peifeng !
 上一篇
Discrete Math Discrete Math
学习内容 https://www.icourse163.org/learn/PKU-1002525004?tid=1450235468#/learn/content?type=detail&id=1214405792&ci
2020-05-22
下一篇 
Spring Start Spring Start
Spring version:5.2.6.RELEASE Spring boot version:2.2.6.RELEASE AOP JDK Proxy 基于 interface , 运行时动态代理 Cglib 基于 extends
2020-05-06
  目录