面试官:MySQL如何进行性能调优?

2,430 阅读2分钟

面试官:MySQL如何进行性能调优?

具体操作我这里整理了慢查询、explain关键字、@@profiling

慢查询

DBA有时候会发现有些语句比较慢,他们怎么发现的呢?

image-20220818210526129

image-20220818210102144 编辑配置文件打开慢查询 image-20220818210149521

image-20220818210229076

然后重启mysql

service mysqld restart

比如这里的设置的超时时间是2s

image-20220818210438392

我们可以在上面指定的日志里面看到这个语句的相关信息

image-20220818210714458

我们可以使用一个工具,在mysql安装包的bin目录下,mysqldumpslow

image-20220818211011087

一些有用语句

客户端的一个一个的连接对于服务端来说是一个一个的线程

image-20220818212531465

explain

explain的各个字段解释:

image-20220818213315112

(当然id也会有一样的,一样的话就从上到下,不一样就从下到上)

image-20220818213608998

image-20220818213902769

image-20220818215023777

@@profiling

还有一个工具,是谷歌程序猿集成到mysql中的

image-20220818211155936

注意,可以看到这些默认的性能分析工具都是关闭的,因为会消耗性能,所以一般测试完都要及时关闭

image-20220818211407965

然后根据语句id查看具体语句的情况

image-20220818211530957

也可以:

image-20220818211443743

总结回答

MySQL性能调优通常涉及以下步骤:

  1. 分析查询:使用MySQL内置的查询分析器或其他性能分析工具(如Percona Toolkit),以了解查询关键字、表扫描、索引使用情况等方面的信息。
  2. 优化数据库架构:考虑数据的归档、分区和缓存,以在查询时减少磁盘访问。
  3. 优化索引:使用覆盖索引、复合索引、前缀索引等方法,确保索引的有效性并减少索引的数量。
  4. 维护索引:使用OPTIMIZE TABLE或ANALYZE TABLE等命令来优化或重建索引,以提高查询性能。
  5. 优化存储引擎:评估和选择最合适的存储引擎(如InnoDB、MyISAM),以满足您的应用程序需求,并使用存储引擎特定的参数来优化性能。
  6. 优化缓存:调整参数,使查询缓存工作得更好,并遵循最佳实践,如设置合适的缓存大小、禁用不必要的缓存模式等。
  7. 处理请求:使用连接池来避免连接过多、限制查询结果数量、分割长查询,以应对并发请求。
  8. 监控性能:使用工具来监视MySQL活动,以便及时发现问题并采取措施。