zoukankan      html  css  js  c++  java
  • Mysql优化

    1. 服务器层面

      1)尽量数据存到内存,Innodb_buffer_pool_size建议设为服务器总内存的 3/4 或者 4/5

        如果我们到mysql那查看 SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_pages_%'

                 看到 Innodb_buffer_pool_pages_free为0,那么就说明配给mysql的内存不够了

      2)减少IO

        当然我们无法减少数据的IO,但是我们可以减少不必要的日志的开启

      3)加内存,更换更好的磁盘

        我们可以给服务器加内存,并增大分配给mysql的内存数;同时我们可以考虑更换磁盘为固态硬盘ssd

    2. SQL设计优化

      1)中间表 (定时去把需要多表关联数据写到一个表,避免实时去跨多表查询,但是这个只适合一些对实时性要求不高的数据)

      2)冗余字段 (为了避免跨表查询,但是需要注意一致性)

      3)合理拆表 (一个表字段太多,会导致索引数据特别大,查询自然变慢;不经常使用的字段/比较大的字段也可以考虑拆开)

      4)主键索引 (在不考虑分布式式下,最好是int 自增)

    3. 开发层面(索引)

      1)为搜索字段建立索引

      2)组合索引尽量要有顺序

      3)尽量不要用select *,而用“覆盖索引”

      4)order by,group by尽量使用索引(不然mysql会用文件排序)

      5)如果预计只会返回一条数据(在查非唯一索引的情况下),用LIMIT 1(找到后立即返回,避免全表搜索)

      6)跨表条件数据类型要一致,否则索引会失效

      7)尽量不使用SQL内置函数,不然不会把查询存到Buffer

  • 相关阅读:
    恶意代码分析
    免杀原理与实践
    GIT安装及IDEA配置(GIT)
    Idea导入本地Mavenue项目
    Redis在linux安装部署(单机版)
    python数据科学导论--读书笔记01
    廖雪峰Python3 学习笔记--切片、迭代、列表生成式、生成器、迭代器
    廖雪峰Python3 学习笔记--函数参数(默认参数、可变参数、关键字参数)
    廖雪峰Python3 学习笔记--编码
    廖雪峰Python3 学习笔记--变量常量
  • 原文地址:https://www.cnblogs.com/amiezhang/p/10327341.html
Copyright © 2011-2022 走看看