mysql 高级学习

mysql server 架构体系(了解)

连接器

使用命令查看当前mysql的连接

show processlist;

分析器

词法分析语法分析 组成,解析sql语句,使用 antlr 和 calcite 实现

优化器

RBOCBO 两个组件组成

  • RBO : 基于规则优化
  • CBO : 基于成本的优化

执行器

与对应的存储引擎进行交互.

存储引擎

主要包括 innodbmyisam, 不同的数据文件在不同的组织形式,mysql5.5之后默认为innodb引擎

innodb 与 myisam 的区别

innodbmyisam
支持事务不支持
有外键没有
支持行锁表锁支持表锁
索引存储的叶子节点的数据不同
count(*)在myisam中比较快,但是不能带任何的查询条件

使用命令查看引擎列表

show engines;

在这里插入图片描述

查询缓存

在 mysql 8.0 之后取消,

索引系统

相关问题

  1. 索引存在文件中还是内存中?

索引是必须进行持久化存储的,除了memory这种存储引擎,所以索引是存储在文件中的

  1. 索引在进行数据读取的时候,需要返回什么信息?

key值 文件名称 offset

  1. 为什么mysql不使用这种格式?

  1. mysql如何设计索引系统?

数据格式: k-v
数据结构: hash 树

  1. mysql采用什么样的数据结构?

hash B树
使用什么数据结构和存储引擎相关联,innodb使用的是B树,但本质上是B+树,同时innodb支持自适应hash
memory,myisam 存储引擎使用的是hash数据结构

  1. 为什么?
  1. 需要良好的hash算法
  2. hash表需要大量内存
  3. 不适合范围查询,不太适合大量查询的应用场景

拓展名词

OLTPOLAP
联机事务处理联机分析处理
关系型数据库数据仓库
时效性高对历史数据分析,产生决策性影响

局部性原理: 空间和时间,数据程序聚集存放,更改被查询过的数据有可能很快又被查询;
磁盘预读:内存跟磁盘进行交互的时候,有一个最小的逻辑单元,称为页,页一般大小为4k或者8k,而在进行数据交换的时候,也是以页为单位的,可以是页的整数倍,innodb存储引擎默认读取16kb

在B+树中有两个头指针,一个指向根节点,另一个指向关键字最小的叶子节点,而且所有的叶子节点(即数据节点)之间是一种链式结构,因此可以对B+树进行两种查找运算: 一种是对于逐渐的范围查找和分页查找,另一种是从根节点开始,进行随机查找

聚簇索引和非聚簇索引?

聚簇索引: 数据和索引是放在一起的

一个表的聚簇索引一定是主键索引吗?

不一定

一个表的聚簇索引会有很多个吗?

只有一个

主键索引一定是聚簇索引吗?

创建表的时候没有主键,没有唯一键,添加数据之后,设置了主键

innodb主键聚簇,myisam非聚簇
innodb的普通列索引是非聚簇索引

索引分类

可分为聚簇索引和非聚簇索引
也可以分为以下分类:

主键索引
唯一索引
普通索引/辅助索引/二级索引
全文索引
组合索引/联合索引:索引包含多个列

一般情况下,sql语句尽可能多的带主键字段,方便进行查询,但是主键字段的条件一定会生效吗?

不一定,可能走其他索引

普通索引 回表

select * from stu where name = ‘zhangsan’
先查询name索引的B+树 返回id值,再使用id值查询所有数据,称为回表

普通索引 索引覆盖

通过name这棵树找到要查询的所有字段,可以直接返回,不需要从主键树中检索结果,此时叫索引覆盖,sql优化通常可以选择索引覆盖

组合索引 最左匹配

每次匹配从第一个列开始匹配,当表中的所有列都是索引列时,不符合

组合索引 索引下推

多个条件查询时,根据条件从存储引擎中数据筛选,然后选出对应的结果

索引失效

在组合索引中sql语句使用 大于 或者小于 会阻挡后边的索引
模糊查询时,不能以%开头
id + 1 = 3;索引id列不能使用表达式
隐式转换 ,比如 phone = 13548时,底层会类型自动转换,应当使用phone = ‘13548’

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值