知识点汇总
常用SQL语句
数据类型
存储引擎
- MyISAM
- InnoDB
- ToKuDB:
锁
- 表锁
- 行级锁
- 共享锁
- 排他锁:就是写锁
四、索引
需要额外的磁盘空间来保存索引,更新删除会增加额外的开销,适合用在读多写少的场景
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 表结构与索引
- 分库分表,读写分离;
- 为字段选择合适的数据类型;
- 将字段多的表分解成多个表,增加中间表;
- 混用范式与反范式,适当冗余;
- 为查询创建必要索引,但避免滥用;
- 尽可能使用NOT NULL,影响索引效率。
7.2 SQL语句优化
- 寻找最需要优化的语句:分析慢查询日志;
- 利用分析工具:explain(分析语句执行计划,是否使用索引)、profile(分析某个语句分布耗时);
- 避免使用SELECT *,只取需要的列;
- 尽量使用prepared statements(性能更好,防止SQL注入);
- 使用索引扫描来排序。
7.3 MySQL参数优化
- 连接数
- 索引缓存
- 查询缓存
- 排序缓存
7.4 硬件及系统配置
- 调整操作系统参数
- 禁用swap
- 升级内存
- 升级固态硬盘
考察点
加分项
面试真题
2、
- 消息的发送者保证投递到消息队列
- 消息队列自身的高可用
- 消费方处理完后修改offset
3、
- 消息处理实现幂等
- 使用redis实现消息去重
4、创建索引、减少关联查询,优化查询条件