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