• Mysql调优你不得不考虑的事


    MySQL调优是我们面试中经常会被问到的事情,就算我们没有做过调优方面的工作,我们也要不得不学习以下知识,以便能回复面试官
    在这里插入图片描述
    从优化的成本角度来讲,从左到右优化成本逐渐升高;从优化效果角度来看,从右到左优化的效果更高。

    1. 针对数据库设计、表结构设计以及索引设置纬度进行的优化
    2. 对我们业务中使用的 SQL 语句进行优化,例如调整 where 查询条件;
    3. 对 MySQL 服务的配置进行优化,例如对链接数的管理,对索引缓存、查询缓存、排序缓存等各种缓存大小进行优化;
    4. 对硬件设备和操作系统设置进行优化,例如调整操作系统参数、禁用 swap、增加内存、升级固态硬盘等等

    在这里插入图片描述

    针对表结构及索引优化,我们需要考虑到以下方面

    1. 要在设计表结构时,考虑数据库的水平与垂直扩展能力,提前规划好数据量、读写量的增长,规划好分库分表方案。
    2. 要为字段选择合适的数据类型,在保留扩展能力的前提下,优先选用较小的数据结构。例如保存年龄的字段,要使用 TINYINT 而不要使用 INT
    3. 可以将字段多的表分解成多个表,增加中间表进行关联,一张表有几十个字段显然不是一个好的设计
    4. 设计关系数据库时需要满足第三范式,但为了满足第三范式,我们可能会拆分出多张表。而在进行查询时需要对多张表进行关联查询,有时为了提高查询效率,会降低范式的要求,在表中保存一定的冗余信息,也叫做反范式。但要注意反范式一定要适度
    5. 要擅用索引,比如为经常作为查询条件的字段创建索引、创建联合索引时要根据最左原则考虑索引的复用能力,不要重复创建索引;要为保证数据不能重复的字段创建唯一索引等等。不过要注意索引对插入、更新等写操作是有代价的,不要滥用索引,比如像性别这样唯一很差的字段就不适合建立索引
    6. 列字段尽量设置为 not null。MySQL 难以对使用 null 的列进行查询优化,允许 null 会使索引、索引统计和值更加复杂,允许 null 值的列需要更多的存储空间,还需要 MySQL 内部进行特殊处理

    针对SQL语句进行优化,需要考虑以下方面

    • 要找到最需要优化的 SQL 语句。要么是使用最频繁的语句,要么是优化后提高最明显的语句,可以通过查询 MySQL 的慢查询日志来发现需要进行优化的 SQL 语句
    • 要学会利用 MySQL 提供的分析工具。例如使用 Explain 来分析语句的执行计划,看看是否使用了索引,使用了哪个索引,扫描了多少记录,是否使用文件排序等等。或者利用 Profile 命令来分析某个语句执行过程中各个分步的耗时
    • 要注意使用查询语句是要避免使用 SELECT *,而是应该指定具体需要获取的字段。原因一是可以避免查询出不需要使用的字段,二是可以避免查询列字段的元信息
    • 尽量使用 prepared statements,一个是它性能更好,另一个是可以防止 SQL 注入
    • 尽量在有索引的字段上进行排序操作,即多实用order by,group by方法
  • 相关阅读:
    SpringBoot项目整合Redis,Rabbitmq发送、消费、存储邮件
    MATLAB循环结构
    使用在线的vscode打开github项目
    直播预告 | 全新定义业务观测新范式,让稳定更有力量
    观测云产品更新|观测云帮助文档目录更新;新增 DEMO 工作空间查看入口;时序图新增事件关联分析等
    网络安全学习--操作系统安全防护
    为何学linux及用处
    双精度浮点型double
    【Linux前篇 】VMWare虚拟机安装与环境配置及远程连接 —— windows版
    JavaScript基础05——字面量、变量介绍及变量基本使用
  • 原文地址:https://blog.csdn.net/mr4569870/article/details/126409123