32个java面试考点:MySQL调优与最佳实践

知识点汇总

32个java面试考点:MySQL调优与最佳实践_第1张图片

常用SQL语句

 

数据类型

 

 

 

存储引擎

  1. MyISAM
  2. InnoDB
  3. ToKuDB:

  1. 表锁
  2. 行级锁
  3. 共享锁
  4. 排他锁:就是写锁

 

四、索引

需要额外的磁盘空间来保存索引,更新删除会增加额外的开销,适合用在读多写少的场景

4.1 分类

唯一索引:值是惟一的,允许存在null值,用来保证数据的唯一性

主键索引:特殊的唯一索引,但不允许出现null值

普通索引:

联合索引:多个列按顺序共同组成一个索引,注意最左原则,及where中的字段必须和联合索引从左到右进行匹配。

全文索引:MyISAM支持该索引,5.6版本以后InnoDB支持该索引,5.7.6后支持中文索引,只能在char、varchar、text上使用,对于大数据量的表很消耗时间和空间。

4.2 实现

B-Tree:适合大于小于这种范围查询,最常使用。

R-Tree:处理多维数据的数据结构,可以处理地理位置等数据结构。

Hash:效率比B-Tree高,不支持范围查找、排序等功能。

FullText:实现全文索引,是记录关键字等文本的倒排索引。

 

存储过程与函数

 

 

8.0新特性

默认UTF-8编码

隐藏索引

通用表表达式

窗口函数

 

 

七、MySQL调优

32个java面试考点:MySQL调优与最佳实践_第2张图片

表结构与索引 -> SQL语句优化 -> MySQL参数优化 -> 硬件及系统配置

优化成本:从左到右

优化效果:从右到左

开发人员:前两种优化

DBA人员:后两种优化

7.1 表结构与索引

  1. 分库分表,读写分离;
  2. 为字段选择合适的数据类型;
  3. 将字段多的表分解成多个表,增加中间表;
  4. 混用范式与反范式,适当冗余;
  5. 为查询创建必要索引,但避免滥用;
  6. 尽可能使用NOT NULL,影响索引效率。

7.2 SQL语句优化

  1. 寻找最需要优化的语句:分析慢查询日志;
  2. 利用分析工具:explain(分析语句执行计划,是否使用索引)、profile(分析某个语句分布耗时);
  3. 避免使用SELECT *,只取需要的列;
  4. 尽量使用prepared statements(性能更好,防止SQL注入);
  5. 使用索引扫描来排序。

7.3 MySQL参数优化

  1. 连接数
  2. 索引缓存
  3. 查询缓存
  4. 排序缓存

7.4 硬件及系统配置

  1. 调整操作系统参数
  2. 禁用swap
  3. 升级内存
  4. 升级固态硬盘

 

 

考察点

32个java面试考点:MySQL调优与最佳实践_第3张图片

 

 

加分项

32个java面试考点:MySQL调优与最佳实践_第4张图片

 

 

 

 

 

 

面试真题

32个java面试考点:MySQL调优与最佳实践_第5张图片

2、

  1. 消息的发送者保证投递到消息队列
  2. 消息队列自身的高可用
  3. 消费方处理完后修改offset

3、

  1. 消息处理实现幂等
  2. 使用redis实现消息去重

4、创建索引、减少关联查询,优化查询条件

 

 

 

 

你可能感兴趣的:(MySQL,面试,32个Java面试必考点)