数据库优化
- 服务器硬件:cpu、内存、磁盘IO、网卡流量
- 服务器操作系统:Linux的配置参数不同性能不同。
- 数据库存储引擎的选择:MyISAM不支持事务,表级锁,InnoDB事务级存储引擎,支持行级锁和事务ACID
- 数据库自身配置参数:Mysql有上百项数据库配置参数(缓冲区、连接数、线程数、查询缓存等)。
- 数据库表结构的设计和sql语句的执行效率:慢查询是性能问题的罪魁祸首,不合理的数据表结构设计和不合理的索引是影响数据库查询性能的重要原因。
- 数据库架构:高并发下读写分离、分库分表、多级缓存、搜索引擎。
从小的模块入手:
sql优化
- 避免使用select * ,增加查询解析器的成本,不走覆盖索引会产生回表操作;字段内容过大,增加了内存和IO的资源。
- 小表驱动大表
- 使用limit
- join表不宜过多。
- 避免使用%通配符查询,这种查询不走索引
索引优化
- 优先考虑where、join、orderby、groupby中出现的列。
- 高基数优先:比如:user_id,order_id等。
- 联合索引优于多个单列索引,注意最左原则。
- 覆盖索引优先,查询只涉及索引中的字段时可以直接返回结果,无需回表。
- 主键应是业务中唯一且稳定的字段。
- 控制索引数量,每张表控制在3-5个为宜。
- 频繁更新的字段慎用索引
- 使用explain分析执行计划
- 提升group by的效率,可以为group by增加索引
表结构设计优化
使用合适的数据类型(如 tinyint 替代 int)
尽量避免使用 NULL,会使索引变复杂
分库分表

浙公网安备 33010602011771号