说一下自己的总结和感悟。
首先数据很重要,不要搞挂数据库,查询要效率。
逻辑可以往java里面压,因为可以负载均衡加机器(哈哈)。
数据库和表层面
1,分库分表,分库规则按数据段分(易扩展),分表取余数分。
2,读写分离,主库写,从库读(数据同步有延迟,记得有坑)
3,每张表定义一个自增长的整型的ID(好处多多,根据主键索引结构分析)
4,消灭外键,消灭存储过程给数据库减负。
5,常用的查询字段,加索引,联合索引(记得最左匹配原则)
6,设置SQL超时时间
7,热点数据放Redis
8,常用查询表适量冗余数据,尽量单表查询,少jion查询。
SQL常见
1,查询尽量避免函数,
2,慎用order by,group by
3,不可select * ,要每个字段都列出来
4,设置查询条件,若无条件需返回空结果的,用1=2,而不是a=‘-1000’
5,like 模糊查询,直接用搜索
6,拆分大SQL
7,尽量避免使用函数,逻辑往java里面压。
8,定期排查慢SQL,给出优化方案