数据库慢查询优化的一个回答

之前字节二面的一个问题,个人觉得答的尚可,记录一下答案欢迎评论区指正和补充
回答:
首先我们分情况讨论,对于我们索引,首先explain打一下查询计划,看看key字段走的是哪个索引,如果出现回表的情况是否可以优化,然后如果是联合索引就看看len字段走了几个索引,当然最重要还是看type字段是否走了索引。然后我们针对性的对索引失效,或者回表等情况优化。
然后深分页也会导致一个慢查询的情况,尤其是limit字段,有两种方式一个是建立子查询先把主键id查出来然后根据id走索引,还有就是像你们抖音短视频下拉刷新这个分页场景,可以把利用游标的方式将上一次查询的主键id作为下一次查询的参数传入优化我们的查询
当然我们数据库的sql语句也可以优化,比如为了方便我们数据库的连接join操作可以先将我们查询的字段先进行限制和投影,减少我们连接操作涉及的字段
当然我们抛开业务取谈设计也不可取,对于特定业务可以进行反范式的设计,引入一些冗余字段,特别是像商品spu和sku这种聚合查询的情况
#字节跳动# #后端#
全部评论
在explain之前还可以先看一下慢查询日志,比如mysql可以设置慢查询的阈值并且拿到执行时长超过阈值的sql,日志有锁竞争的时间,如果锁竞争的时间太长可以从并发的方向入手优化,之后再常规优化索引之类的。
1
2
回复 分享
发布于 05-17 22:38 美国
美团技术有一个写的很详细的技术文章,关于慢查询的解决办法
1
送花
回复 分享
发布于 05-17 23:25 广东
字节跳动
校招火热招聘中
官网直投
慢查询会导致N个数据库连接Hang住,MySQL Server(数据库服务)的连接数是有限的,如果所有连接被慢查询占住,然后客户端又不断想要获取连接发送SQL,逐渐恶化,对用户的体验就是功能无法正常使用,不断报错,而MySQL Server也可能会被打挂掉。
点赞
送花
回复 分享
发布于 05-20 16:22 湖南

相关推荐

淘宝搜索是阿里巴巴集团的最核心业务场景之一,在电商搜索算法技术领域深耕多年,有深厚的技术积累,长期致力于通过持续的技术创新提升搜索用户体验、搜索成交等电商核心业务目标。欢迎ML/NLP/CV/模型加速相关方向同学加入我们!投递简历或咨询请联系招聘师兄pengwenjun.pwj at alibaba-inc.combase:杭州/北京工作内容:1. 搜索相关性算法:设计和优化淘宝主搜相关性,包括深度语义相关性模型,实体匹配,建立合理的相关性评测方法,进行数据挖掘,迭代数据标注任务,积累电商领域知识数据资产;2. 搜索召回算法:设计和优化淘宝主搜召回下超大规模召回任务,负责文本语义匹配、超大规模智能索引的构建、基于图文双模态的语义匹配等技术方向在召回的落地;负责大规模用户个性化召回技术;设计和优化多路召回差异化协同机制,设计指导召回迭代的评价指标;3. 搜索排序算法:设计和优化淘宝主搜排序下超大规模点击率、转化率精准预估任务:深入研究全域用户行为建模、大规模商品表达、端到端多模态排序、全域信息迁移、无偏学习等技术方向在排序的应用;4. 模型加速:设计和优化稀疏模型或LLM结构,优化模型在样本、训练、存储和推理的极致性能;设计和优化搜索全链路多阶段漏斗;5、多模态&大语言模型:设计和优化基于多模态的预训练算法,挖掘电商图文多模态信息,构建电商商品多模态预训练表征学习任务;探索大语言模型在检索任务上的训练方式,分析和解决大语言模型在电商搜索召回和排序上的挑战和问题,完成在具体搜索任务的落地应用;6、Query理解和商品理解:设计和优化query理解方法和商品质量分体系,同时包括优化其在全链路的应用方式,涉及多任务建模,时序预测,冷启动,域泛化等。岗位要求1.计算机、自动化、数学或统计学等相关专业硕士及以上学历2.具备扎实的数据结构,算法和编码能力,精通至少一种编程语言,如C++、JAVA、Python等3.熟练掌握机器学习/深度学习算法的基本原理,并能灵活运用4.有扎实的动手能力,有工业界相关方向的实践经验者,或参加过ACM或数据挖掘/机器学习类竞赛并取得优异名次者优先5.有强烈的技术热情,有皮实乐观、不畏挫折的心态;具备优秀的分析和解决问题的能力;具备优秀的学习能力和团队合作精神
投递阿里巴巴等公司10个岗位
点赞 评论 收藏
分享
14 132 评论
分享
牛客网
牛客企业服务