当前位置: 首页 > news >正文

MySQL调优

MySQL调优

  • 常见的回答
  • 如何回答效果更好
  • 业务层的优化
    • 如果只能用mysql该如何优化
  • 代码层的优化
  • SQL层面优化
  • 总结

常见的回答

SQL层面的优化——创建索引,创建联合索引,减少回表。再有就是少使用函数查询。

回表指的是数据库根据索引(非主键)找到了指定的记录所在行后,还需要根据主键再次到数据块里获取数据。

如何回答效果更好

我们把SQL优化,分为四层:
1、业务上的优化
2、代码层的优化
3、sql层面的优化(包含索引优化)
4、硬件层优化

硬件层的优化,其实都是运维,所以硬件层的优化,是由团队其他成员完成的。

业务层的优化

表里面十多亿的数据,这里我们进行了分库分表和集群。索引什么的已经优化到最好。

vip 1级可以看多少数据,5级可以看全部的数据

查数据,其实肯定都是分页查,分页的下面是有一个count

我不用mysql了,我直接上es。这是一个办法。

我可以一页一页的来缓存。也是一个办法。

es。我们就一周的开发周期。这块已经是外包开发完了,但是做接口压测时候,接口不通,因为数据太多,服务器直接卡住了,一个sql可以查询几十秒。

es。我们为什么不上es,第一点就是时间短,第二点就是因为不是我们写的代码,业务不熟悉没法直接改外包的代码。第三点就是外包人员技术参差不齐。对es不太熟悉。

如果只能用mysql该如何优化

首先就是可以业务上的优化,可以说跟产品经理交流,比如默认级的用户上来访问,直接让他默认就带一些查询条件,这时候,他的查询就会筛选过滤。这样再查数据的话,就会比较的快。

其次,因为这里count我们就必须给他改了。count我们单独给他写出来。

如果这时,count依然是十几亿的数据,那只能从代码层面进行优化了。

代码层的优化

数据库上的设计层面。

我们当时是单独建立了一张表,然后这个表存储了数据表名称,主键,count数。

如果是加数据的话我们会异步的往这个表去+1数据。然后就是查询的时候,count值直接查询这个表里面count这个列就能把数据查询出来了。

count的问题就解决了。

SQL层面优化

最简单最直接的,其实就是创建联合索引。减少回表,也就是说所有数据直接在这一个索引树下就查询出来了。

连表查询,连表查的比较多了,比较慢了,这时候索引怎么建用处都不太明显了。这时可以代码层面做优化,写两个sql,查询出来数据,做拼装。

总结

我们面试的时候,sq优化问你了,你要如何去说:

  1. 首先,一定要结合自身的项目来谈优化,根据你项目的数据量并发高的部分,来谈如何优化,而不是上来直接
    说优化的话就是创建联合索引,尽量别使用函数查询。

  2. 其次就是,跟面试官谈具体的优化经过,比如慢查询警报,例如企业微信发警报日志或者发短信提醒。根据日志去查询慢查询的sql。

查询出来了,可以结合代码,根据实际情况去修改。

参考资料:(全网讲的最好)面试被问到mysql调优如何回答

http://www.lryc.cn/news/45116.html

相关文章:

  • 《Flutter进阶》flutter升级空安全遇到的一些问题及解决思路
  • 最值得入手的五款骨传导耳机,几款高畅销的骨传导耳机
  • HashMap源码分析 (1.基础入门) 学习笔记
  • 6 使用强制类型转换的注意事项
  • Leetcode.939 最小面积矩形
  • Springboot项目快速实现过滤器功能
  • 基于springboot的简历系统的实现
  • Vue3中watch的用法
  • MS python学习(18)
  • java笔记
  • 对象的构造及初始化
  • Socket 读取数据
  • 小白的Git入门教程(一)
  • 第一个Vue程序
  • 2023上学期学习计划
  • 深入了解MySQL锁机制及应用场景
  • Java类和对象
  • aspnet053+sqlserver在线考试系统xns
  • 新一代大学英语(提高篇)
  • 阿里云OSS 203 Non-Authoritative Information问题解决
  • 【数据结构】你真的认识“”吗?它真的就只是“取地址”吗?或许你一直都在误解它。
  • [深入理解SSD 21] 固态硬盘GC机制 | GC 分类 | GC 过程 | GC 和 Trim 的关系
  • 大数据未来发展怎么样?
  • 【Linux】进程和线程间的区别与联系
  • 【C语言】变量和常量
  • 蓝桥杯-卡片换位(BFS)
  • 霍夫曼编码 | 贪心算法 2
  • async 与 await
  • MYSQL语句
  • C语言函数:内存函数memcpy()以及实现