Mysql优化

硬件层面

  1、选择IO性能好的服务器;

  2、数据库服务器不要开启其他服务。

数据库层面

  1、加大Mysql缓存大小;

  2、加大max_connections数量,提高并发量

表结构涉及层面

  1、InnoDB基于B+树的特点,大数据量表尽量用自增主键提高读写效率

  2、合理创建索引,重复数据多的或者NULL值的不适合做索引

SQL层面

  主要是基于索引的优化,比如

  1、大批量插入数据,可以按照主键顺序排列,同时可以关闭唯一性校验,改为手动提交事务。

  2、因为mysql的索引是遵循左前缀原则,比如索引a、b、c,只有在查询条件或者group by、order by的字段排序为a,ab,abc时索引才会生效,所以要尽量保证顺序一致。

  3、查询包含group by但是用不需要排序的时候,可以加上order by null 

  4、用具体字段代替select *

  5、关联查询代替子查询

  6、or如果索引失效,可以用union代替

  SQL的优化不限于此,具体的可以查看执行计划,即在sql前面加上explain,查看连接类型,是否走索引等。

架构设计层面

  1、考虑到高可用性,可采用MySQL主从复制+Keepalived做双击热备,常见集群软件有Keepalived、Heartbeat。

  2、读写分离

  3、连接池

  4、缓存机制减轻数据库压力,比如redis等

代码层面

  1、合并SQL,比如insert into tb_test values(1,'Tom'),(2,'Cat'),(3,'Jerry');

  2、多线程访问数据库。

 

 

 

  

posted @ 2021-09-16 15:50  松哥的博客  阅读(50)  评论(0)    收藏  举报