可以分别从SQL语句层面、SQL配置层面、SQL架构层面和业务层面来优化。
SQL 语句层面
1. 调优策略
*号的处理(只是提取必要字段,减少流量) 大SQL(拆分、逐步缩小结果集) 合理的索引(where字句后面的条件) 类型转换(“符号的使用) 尽量不要用范围查询,或者缩小检索范围(e.g.程序逻辑 update)
2. 哪些SQL需要调优
找开发 查看程序日志(e.g.接口 -> 后台服务) 查看慢查询日志 查看统计:最多调用、最占流量
SQL配置层面
1. 哪些配置需要关注
Query_Cache max_connections wait_timeout lock
SQL架构层面
主从复制(读写分离) 考虑数据一致性 分库分表(UID倒数几位取模) 映射关系 是否均匀 负载均衡 LVS、F5、Nginx 多级缓存 redis
业务层面的思考
表字段拆分 1.某些列字段不常用 2.text(适用key-value) 拆分出来,新建一个详情表 方便运维(DDL)、便于缓存、提高查询性能 冷数据备份 把每年历史数据导出去,缩小检索范围 程序逻辑的处理 UPdate全表的例子