mysql汇总

一、mysql的存储结构

mysql基础理论,及undolog和redolog、mvcc等 跳转

Mysql数据存储结构:跳转

联合索引案例:跳转

二、索引

索引分类,已经每种索引在数据库的存储结构跳转

索引类型:

(1).普通索引:普通索引是最基本的索引,它没有任何限制,允许在定义索引的列中插入重复值和空值
(2).唯一索引:索引的值必须唯一,允许有空值,如果是组合索引,列值得组合必须唯一
(3).主键索引:它是一种特殊的唯一索引,一张表只能有一个主键,不允许有空值,一般是在创建表的时候指定主键,主键默认就是主键索引
(4).组合索引:多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用
(5).全文索引:它更像是一个搜索引擎,用来查找文本中的关键字,而不是直接与索引中的值比较,全文索引需要配合match against操作使用,比如:match(字段名) against(“rabbit”)。 而不是一般的where和like
(6).空间索引:空间索引是对空间数据类型的字段建立的索引,创建空间索引的列,必须被声明为not null

1、主建索引:走的是聚簇索引,存的非叶子节点存的是索引,叶子节点是索引+数据。
2、组合索引:走的是辅助索引,非叶子节点存的是组合所有的所有的数据,叶子节点存的是组合索引+主建索引,最终都是为了拿到主建索引在回表去聚簇索引里面找。由于辅助索引的存在并不会影响数据在聚集索引中的组织,因此每张表中可以有多个辅助索引
3、非索引查找:走的是聚簇索引,全表扫描,这个是最慢的。

什么是全文索引,怎么使用跳转

组合索引在辅助索引的存储方式,以及排序规则,在查询匹配的时候,也是最左匹配原则。
跳转

1、什么是覆盖索引:覆盖索引是指,在select后面只有部分列,而且这些列在辅助索引结构中都包含了,所以就不需要再走回表去聚簇索引里面捞数据。

2、索引下推:mysql数据分三层,第一层:连接层 第二层 server层,第三层 引擎层
server层主要是用来解析sql,和拿到sql返回的数据,在更具where过滤掉数据,server拿到的数据是索引过滤好了的,因为不是所有where在引擎层都能过滤完的。
那么索引下推是指,当我们用了like模糊查询数据后,没有下推的情况下,是不走like后面的索引,如果有索引下推,就会在拿索引在引擎层,在一次判断。

索引下推触发的条件:
1、
2、
3、
4、
5、

精选好文跳转

const > ref > ref_or_null > range > index > all 的含义
const表示使用精准匹配,并且是主建或者唯一索引进行匹配,ref是普通索引进行匹配,range是指主建或者普通索引的范围匹配。index其实也叫索引覆盖。
跳转

二级索引和非聚簇索引,或者复合索引都是一个东西。就是非主建索引。

如果索引是中文或者字符串,那么在非聚簇索引中,是怎么排序的。是通过设置的字符串,通过设置的字符集找到汉字所对应的编码,然后存储在索引上,注意汉字相对比较占用空间。

三、mysql分库分表

分表、分库、分区的区别:跳转

分片键选择跳转

sharding-jdbc使用案例跳转

分库分表数据迁移问题:跳转

mysql 面试-主要是针对分库分表后一些问题 跳转

分库分表难点:
1、跨数据库关联查询。
2、分布式事务
3、排序、分页、
4、分库分表键
5、扩容问题

分库分表一些概念

水平分区和垂直分区跳转

2、分区和分表的区别:分区就是对数据在物理层面的拆分,分表是对数据拆分。分区可以水平分,不能垂直分,分表可以水平分和垂直分。分区主要突破磁盘的读写能力。
跳转

什么是异地多活,说白了就是各个区域都有备份,选某一个区域做主节点,当主节点又数据写入,那么就把主节点的数据同步给其他区域的副节点。
跳转

你可能感兴趣的:(数据库框架,mysql,存储引擎)