数据库(面试篇)

定位慢查询

SQL性能分析

在这里插入图片描述
在这里插入图片描述

索引

在这里插入图片描述

在这里插入图片描述

聚簇索引

聚簇索引与非聚簇索引,聚簇索引一般是主键索引。
在这里插入图片描述
索引失效
在这里插入图片描述

SQL优化

在这里插入图片描述
添加索引

  1. 字段值有唯一限制
  2. 频繁使用作为where查询条件
  3. 经常 group by order by列
  4. Distinct字段
  5. 区分度高的列
索引场景题

MySQL索引,现在有一个名字,性别,身份证的表,5000w数据,查询所有男性,在性别上建索引,但是仍然全表扫描,为什么?MySQL这么做的原因是什么?
答:MySQL会根据统计信息来选择索引,如果男女性别比例是1:1的话,那么使用索引可能并不会较少查询的行数,带来更快的查询速度。如果要查询的数据包括索引列之外的数据的话,在这种情况下索引可能更加耗时,因为还会涉及到回表。其次,索引是通过区分不同的值排序来实现快速查找的,如果一个字段只有两个可能的值,那么这个索引选择性很低,查询并不高效。

事务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

并发事务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

redo log 和 undo log

在这里插入图片描述
在这里插入图片描述

MVCC

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
事务隔离级别:读未提交、读已提交、可重复读、串行化
读未提交没有使用锁和MVCC,读已提交和可重复读使用了MVCC,他们两个的区别是,读已提交每次查询都需要创建一个新的readView快照,可重复读因为解决了不可重复读的问题,所以他在同一个事务中会使用相同的快照。串行化使用的是表锁。

主从同步原理

在这里插入图片描述

分库分表

在这里插入图片描述

截断表(truncate table users)与删除表(delete from users)

delete(删除)一次删除一行数据,并且将每一行被删除的数据都作为一个事务记录日志;而truncate (截断)表则回收整个数据页,只记录很少的日志项。志

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值