Mysql面试题


1.一条sql在服务器端执行过程

1.查询缓存。如果缓存是打开的,mysql服务器会先从缓存中查数据,如果有则直接返回结果

2.生成执行计划。包括解析sql、预处理、优化sql

3.执行查询计划。

4.返回结果。

2.索引有哪几种分类

按数据结构分

  • B+树索引
  • hash索引

    从存储角度区分

  • 聚簇索引
  • 非聚簇索引

    逻辑划分

  • 普通索引
  • 组合索引
  • 唯一索引
  • 主键索引
  • 全文索引

3.InnoDB和MyISAM比较

  • 事务。InnoDB支持事务,MyISAM不支持
  • 全文索引。InnoDB 5.6之前不支持全文索引,MyISAM支持
  • count。InnoDB需要全表扫描。MyISAM存储了count,因此MyISAM可以直接返回
  • 外键。InnoDB支持,MyISAM不支持
  • 锁。InnoDB可支持行锁,MyISAM只支持表锁

4.水平切割和垂直切割

  • 水平切割:指按某个规则切割记录。将符合某个规则的记录存放在指定表,即传统意义上的分表。
  • 垂直切割:将表的某些记录拆成新的表。将关系更大的一些列单独组合成一个新的表,或者变化较大或重复较多的列组合成新的表。

5.主从复制中涉及到哪几个线程

  • binlog线程:负责将sql语句写到binlog日志中
  • I/O线程:负责处理从服务器的请求,将binlog日志响应到从服务器
  • SQL线程:从服务器接收到binlog日志后生成sql并重放

6.主从同步缓慢的原因和解决方法

主从同步缓慢的原因

主要是主服务器压力大,来不及将binlog日志发送到从服务器,压力大的原因有:

  • 慢sql
  • 处理太多的查询操作
  • 从服务器解析&回放sql慢

解决方法

减轻住服务器的压力,增加从服务器的处理速度,主要措施有:

  • 优化索引,减少慢sql
  • 读写分离
  • 主服务主要写,从服务器主要度,因此服务器配置可适当调整一下。比如从服务器只能读,写数据都是从主服务器上同步过来的sql,可以适当降低从服务上的数据安全性、数据一致性校验。

7.事务的特性

  • A:原子性。事务是最小的执行单位,事务中所有的sql要么都执行,要么都不执行。
  • C:一致性。事务执行前后,数据库中的数据从一个一致性状态转移到另外一个一致性状态。
  • I:隔离性。并发执行事务的时候,相互不会影响。
  • D:持久性。事务执行完成后,对数据的修改写到磁盘上了,修改是永久的。即使数据库挂了也不会有影响。

————-持续更新中—————


文章作者: Alex
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Alex !
  目录