zoukankan      html  css  js  c++  java
  • 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缓存。

             

  • 相关阅读:
    (转)HapMap简介
    FASTQ 数据质量统计工具
    CentOS7利用systemctl添加自定义系统服务【转】
    python的pymysql使用方法【转】
    Python使用MySQL数据库【转】
    MySQL全备+binlog恢复方法之伪装master【原创】
    利用binlogserver恢复单表实验【转】
    shell文本左右对齐排版【转】
    关于GTID模式下备份时 --set-gtid-purged=OFF 参数的实验【转】
    mysqlbinlog恢复数据注意事项【转】
  • 原文地址:https://www.cnblogs.com/goodtest2018/p/9165090.html
Copyright © 2011-2022 走看看