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

知识点汇总

常用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调优

表结构与索引 -> 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. 升级固态硬盘

 

 

考察点

 

 

加分项

 

 

 

 

 

 

面试真题

2、

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

3、

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

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

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值