SQL语句如何进行优化?

文章讲述了面试中关于SQL优化的问题,强调了业务背景的重要性,包括问题定位、SQL语句分析、常见问题如索引失效、多表join等,以及针对InnoDB参数如缓冲池大小、I/O线程和事务日志的调整策略。
摘要由CSDN通过智能技术生成

调优常用步骤

掌上先机日常实习的一面过程中,遇到了这个问题,在没有结合业务的角度说明下,面试官对这个问题的回答并没有满意

如何回答

面试官直言这个问题,需要结合相关的业务才能说明,不同的业务采取优化的方式也是不同的,因此,一定要有背景。

有了业务背景,其次就是问题分析了

首先需要定位到具体的SQL语句,可以通过各类监控平台或者工具来实现,通过定位到SQL语句之后,可以知道是哪种表、哪个SQL慢了

一个SQL慢了,有多种原因:

  1. 索引失效
  2. 多表join
  3. 查询字段太多
  4. 表中的数据量太大
  5. 索引区分度
  6. 数据库连接池
  7. 表结构是否合理
  8. 数据库的IO或者CPU比较高
  9. 数据库参数不合理
  10. 存在长事务
  11. 锁竞争

一些参数优化

innodb_buffer_poll_size:缓冲池大小,尽量设置内存偏大一些 70%-80%
innodb_read_io_threads、innodb_write_io_threads:引擎使用的参数I/O线程数量
innodb_log_file_size:事务日志的大小,默认为5M,远远不够

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值