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

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.kler.cn/a/4369.html

相关文章:

  • 一文掌握Docker
  • 从漏洞管理到暴露管理:网络安全的新方向
  • 什么是基础镜像
  • 我要成为算法高手-DFS篇
  • keepalived双机热备(LVS+keepalived)实验笔记
  • C++|CRC校验总结
  • 1.2 从0开始学Unity游戏开发--运行原理
  • vue-antd-admin——实现全网站选项的切换并实现页面的刷新——技能提升
  • iOS私有pod库的gitignore文件
  • 关于清除浮动
  • Linux中find命令使用示例
  • 聊一聊前端的性能指标
  • CSS transition 小技巧!如何保留 hover 的状态
  • 图解redis的AOF持久化
  • thinkphp+vue水果购物商城网站
  • 二维前缀和求子矩阵
  • VSQT 联编无转到槽选项--VS2019中使用QT建立信号和槽函数连接
  • Pytorch线性模型实现——up主:刘二大人《PyTorch深度学习实践》
  • Spring —— Spring简单的读取和存储对象Ⅰ
  • php使用yield处理大数据文件
  • Python中 join() 函数的使用方法
  • vue+springboot贫困山区儿童衣物捐赠网站系统
  • 基于Spring、Spring MVC、MyBatis的共享单车管理系统
  • Studio One没有声音怎么办 Studio One工程没有声音
  • Go底层原理:一起来唠唠GMP调度(一)
  • 【华为OD机试 2023最新 】 区块链文件转储系统(C++ 100%)