调优常用步骤
在掌上先机日常实习的一面过程中,遇到了这个问题,在没有结合业务的角度说明下,面试官对这个问题的回答并没有满意
如何回答
面试官直言这个问题,需要结合相关的业务才能说明,不同的业务采取优化的方式也是不同的,因此,一定要有背景。
有了业务背景,其次就是问题分析了
首先需要定位到具体的SQL语句,可以通过各类监控平台或者工具来实现,通过定位到SQL语句之后,可以知道是哪种表、哪个SQL慢了
一个SQL慢了,有多种原因:
- 索引失效
- 多表join
- 查询字段太多
- 表中的数据量太大
- 索引区分度
- 数据库连接池
- 表结构是否合理
- 数据库的IO或者CPU比较高
- 数据库参数不合理
- 存在长事务
- 锁竞争
一些参数优化
innodb_buffer_poll_size:缓冲池大小,尽量设置内存偏大一些 70%-80%
innodb_read_io_threads、innodb_write_io_threads:引擎使用的参数I/O线程数量
innodb_log_file_size:事务日志的大小,默认为5M,远远不够