1. 索引
2. 反范式设计
3. 将外键放在业务层约束
4. 对于会修改的数据,且该后置数据用作其他表的外键。最好不要使用自增主键。否则在修改数据时采用先删后插的模式会很难处理后置数据的外键
5. 横向分表
a. 冷热分离
• 热表(按时间或者其他 key) 保存
• 冷表(类似历史数据,如果冷表数据太大,也可以结合时间或者业务进行再分表)
a. 业务分表
• 按数据状态分表(类似出院、在院或者事前、事中、事后)
a. 时间分表
• 按照创建时间或者其他非空的时间字段分表
5. 纵向分表
a. 将固定不变的字段放在一个表里,另外经常变动的字段放在另一个表里(类似横向分表中的冷热分表)
6. 分区
key 必须为主键
7. buff_pool 增大
————————————————
关系型数据库优化
1、存储引擎,MyISAM无事务,性能高,InnoDB,支持事务性能低些。
代价:需要重构
2、隔离级别:RC级别,任然有幻读可能
3、连接数优化:
4、设置缓冲区大小:索引缓冲区、表的缓冲区、查询的缓冲区、排序的缓冲区
5、explain分析sql、optimizer trace
6、覆盖索引【查询列都在索引列中,避免回表{二级索引查询后,需要再通过主键(叶子节点)查询到行}】--左模糊会导致覆盖索引失效、索引下推【必须where字段在索引列中、必须不是覆盖索引】、避免select *、
7、优化顺序:索引、缓存、异步化、分区,分库分表
8、分表:表太大,索引较大,优化索引。分库:并发高,连接数不够,优化并发情况