• MySQL优化策略


    一、查询优化思路

    1. 使用索引列查询时,不要使用表达式,将计算放在业务层。
    2. 尽可能使用主键索引,不要使用其他索引(如果不会导致回标的情况除外)
    3. 前缀索引:使用索引的列字符较长,可使用部分前缀字符组件索引,从而节约索引空间,提高索引效率。
    4. 使用索引扫描排序。
    5. where中使用 有索引列 or无索引列 不走索引。
    6. 范围查询条件用到索引,只有第一个范围查询条件会用到索引,后续的条件不会用到索引。
    7. 数据类型转换,字符可以转换为数字,但是字符串转为数字会导致索引失效。
    8. 更新频繁,数据区分度不高的字段不宜建索引(性别)
    9. 创建索引的列值不要置为NULL,不然可能导致混乱。
    10. 数据表join连接,不宜超过三张表,表关联的字段类型要保持一致,不然不会走索引。
    11. 尽可能使用limit。
    12. 索引覆盖。
    13. 优化关联查询,大数据量情况下,通过一个冗余字段关联两个表。如果A关联B,则只需要在B表(被驱动表)关联字段建立索引即可(两表关联查询使用嵌套循环)。确保任何的group by和order by表达式中只使用一个表的列,这样才能走索引
    14. 使用索引列扫描排序。
    15. 联合索引要遵守最左匹配原则。
    16. 避免在索引上使用内联函数。

    二、整体优化思路

    在这里插入图片描述

    三、连接配置优化

    1. 服务端优化:增连连接数量,及时释放不活动的连接。
    2. 客户端优化:减少和服务端的连接次数,使用连接池(阿里的Druid、Hikari)。

    四、架构优化

    1. 使用缓存
    2. 读写分离:主从复制、集群。
    3. 分库分表:垂直分库/表(减轻并发压力)、水平分库/表(解决存储瓶颈)。分库分表常见问题
    4. 消息队列削峰。

    优化器-SQL分析与优化

    1. 慢查询:开启慢查询日志,慢日志分析慢日志查询的工具mysqldumpslow
    2. EXPLAIN执行计划:
    3. SQL优化:小表驱动大表、尽量避免使用select*、统计时尽量使用count(),count()≈count(1),大于count(主键)、
    4. 索引优化:前缀索引优化、覆盖索引优化、主键索引最好是自增的、防止索引失效。
    5. 防止索引失效。
  • 相关阅读:
    Mysql技术文档--设计表规范式-一次性扫盲
    【vue3】shallowReactive与shallowRef;readonly与shallowReadonly;toRaw与markRaw
    问题随记 —— PyCharm 连接远程服务器的 Python 环境
    VR云游:让游客足不出户享受旅行的乐趣
    NVIDIA NeMo Metrics 轻量性能采集系统
    方案绞尽脑汁想不出?试试这款AI代写方案
    mybatis在实际项目中常见的排坑配置
    线程退出学习
    手把手教你安装python环境 Mac Windows
    Metabase学习教程:仪表盘-8
  • 原文地址:https://blog.csdn.net/peng_shakalaka/article/details/127656497