mysql 查询表并发高时的优化点

     先来看查询的sql 语句:

      select id, t1,t2 from t_table where id in(232922924);

     以上查询语句造成数据库的运行线程高,导致页面响应比较缓慢。那么需要从哪些方面来优化查询sql呢?

     一般优化sql 会从以下几个方面去考虑:

        1.使用组合索引;

           (1)如果是单个索引的话,不但要扫描索引,还有回表取其他字段数据的操作,组合索引的话,就可以全部从索引里取数,不需要回表 ;

          (2)索引并不是越多越好,这个得根据实际情况来衡量,索引固然可以提高select的查询效率,但是对insert,update的效率会降低;

          (3)一边一个表的索引不能超过5个,若太多应考虑将不常用的字段的索引去掉;

        2.加大buffer_pool内存,提高硬盘IO能力;

        3.避免全表扫描;

              查询语句一定要查询条件避免全表扫描)

        4.拆成小SQL,程序去拼接数据;

             查询数据简单,用程序来分担查询数据的压力,达到减少高并发发生;

        5.如果时myisam引擎的话,换成innodb引擎;

             myisam引擎的值缓存索引,不会缓存表数据,没有innodb引擎效果好;

  程序架构方面优化:

      1.增加缓存减少直接查询数据库:

          1.比如增加redis缓存;

          2.增加中间层

     2. sql查询分流:

         1.搞多个从库,select语句平均分流多个库中去查询;

     3.数据库采用集群。

     4.静态资源增加cdn缓存。

         

原文地址:https://www.cnblogs.com/goodtest2018/p/9165090.html