MySQL面试相关(1)

1,什么是索引?

一种数据结构,可以帮助我们快速的查找数据

2,为什么选用B+树作为索引数据结构?

hash虽然等值查询很快,但无法进行范围查询,也不支持索引排序,模糊查询。最左前缀匹配等缺点,B+树可以带来较好的查询速度。

3,建立索引考虑因素

选用经常查询的字段建立索引比较合适(经常修改的字段不适合建立索引)

4,常用数据库引擎有哪些?

MyIsam:不支持事务,非聚簇索引,不支持行锁,支持全文索引

INNODB:聚簇索引,支持事务,行锁,不支持全文索引

5,事务ACID属性

A:原子性,要么全部成功提交,要么全部失败回滚,不能执行一部分

C:一致性,一个事务在执行前和执行后,数据库必须处于一致性状态

I:隔离性,并发的事务相互隔离,互不影响

D:持久性,一旦事务提交,对应数据变化就会永久保存到数据库中

6,事务隔离级别

MySQL默认隔离级别为:可重复读

(1),读未提交,允许脏读,级别最低

(2),读已提交,授权读取已提交的数据,不允许脏读,允许不可重复读取

(3),可重复读,保证多次读取同一个数据时,其值和事务开始时是一致的,禁止脏读和不可重复读取,但避免不了幻读(同样事务操作,前后两个时间对同一数据项的读取,可能出现不一致)

(4)串行化,拒绝事务并发,级别最高,事务效率最低,可避免幻读

7,回表是什么?

回表就是先通过数据库索引扫描出数据所在行,再通过行主键ID取出索引未提供数据。即基于非主键索引需要多扫描一次索引树。

8,什么是聚簇索引?

聚簇索引:数据和索引放一块,找到索引也就找到了数据

非聚簇索引:将数据和索引分开放,索引的叶子节点指向数据所在行

9,INNODB主键索引和非主键索引在数据存储上的差异

主键索引叶子节点存的是整行数据,非主键索引叶子节点存的是主键的值

10,为什么INNODB一定会生成主键?

因为数据结构是通过聚簇索引组织起来的,若无主键,通过其他索引回表时无法查询到数据所在行

11,Mysql redo和undo日志是什么?

(1)redo日志保证事务持久性,当用户写数据时,先写redo log然后通过某种方式写入磁盘。

(2)undo日志保证事务原子性,是MVCC机制重要组成部分

12,redo日志的刷盘时机

logbuffer不足时,事务提交时,正常关闭服务器时

13,varchar(10)和int(10)的差别?

varchar10后面的10代表申请的空间长度,也是可以储存的最大长度,而int(10)代表了展示的长度为10,不足10位用0补齐。

14,binlog有几种录入格式?

三种格式,statement,row,和mixed。

15,如何解决超大分页

(1)减少查询时load的数量(2)减少大分页查询(3)靠redis缓存,预先查到分页内容存入redis中直接返回(比较常用)。

16,慢查询优化

(1)首先explain语句,看是否额外load了额外数据,可能是查询了多余行并且抛弃掉了,可能是加载了许多结果中不需要的列

(2)分析语句的执行计划,然后获得其索引使用情况,修改语句或索引,使语句尽可能命中索引

(3)如果语句的优化已经无法进行,可以考虑表中数据量是否太大,如果是这样的话可以进行纵向或横向分表。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nathaniel333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值