1. 线上SQL调优经验。调优的惯用思路。

    一般的调优就是为了用上索引,有一些排序需要的内存过大,得用到磁盘,有些关联的表太多,有些buffer配置过小等等,都是调优的方面,还有业务调优的,就是把这个需求砍了,不是产品要啥就做啥,需要评估实现难度的。
    这是最常用、每一个技术人员都应该掌握基本的SQL调优手段(包括方法、工具、辅助系统等)。这里以MySQL为例,最常见的方式是,由自带的慢查询日志或者开源的慢查询系统定位到具体的出问题的SQL,然后使用explain、profile等工具来逐步调优,最后经过测试达到效果后上线。这方面的细节,可以参考MySQL索引原理及慢查询优化

    1. 分页优化细节

    (1)使用索引覆盖+子查询优化

    1. SELECT a.empno,a.empname,a.job,a.sal,b.depno,b.depname
    2. from emp a left join dep b on a.depno = b.depno
    3. where a.id >= (select id from emp order by id limit 4800000,1)
    4. order by a.id limit 25;
    5. 受影响的行: 0
    6. 时间: 1.541s

    (2)起始位置重定义(将上次最后一条数据id返回)

    1. /*记住了上次的分页的最后一条数据的id是4800000,这边就直接跳过4800000,从4800001开始扫描表*/
    2. SELECT a.id,a.empno,a.empname,a.job,a.sal,b.depno,b.depname
    3. from emp a left join dep b on a.depno = b.depno
    4. where a.id > 4800000
    5. order by a.id limit 25;
    • 监控sql执行情况,发邮件、短信报警,便于快速识别慢查询sql
    • 打开数据库慢查询日志功能
    • 简化业务逻辑
    • 代码重构、优化
    • 异步处理
    • sql优化
    • 索引优化