首页 > 数据库 >干货!!!mysql如何进行优化,mysql优化环节

干货!!!mysql如何进行优化,mysql优化环节

时间:2023-02-14 19:55:16浏览次数:44  
标签:缓存 mysql 查询 干货 MySQL 服务器 磁盘 优化

MySQL优化环节有很多,我个人经验从硬件优化、软件优化、表结构设计、查询语句四个方面来考虑。

硬件优化:

  1. MySQL软件本身是运行在硬件服务器之上,数据是存储在磁盘的。如果能采用高性能固态硬盘,一定比廉价的机械硬盘有质的提升。
  2. 还有就是加大物理内存,提高文件系统性能。
  3. 数据库架构考虑分布式存储,设计主从复制、读写分离,降低单台服务器的压力。
  4. 内网带宽提升到千兆或者万兆带宽,这样对于大数据量传输场景下,能将网络IO降低到毫秒级。
  5. 增加缓存组件,如采用Redis,将高频查询操作,预热到Redis中,这样,高频的并发查询没必要每次都压到MySQL,毕竟MySQL数据在磁盘中,Redis数据在内存中,内存寻址速度是磁盘的100万倍。
  6. 分库分表,MySQL数据文件本质就是一个个的磁盘文件,如果磁盘文件 过大,那么在加载、寻址,包括索引查询时的时间复杂度都会上升,可以采用水平拆分或垂直拆分的方式将数据拆分到多台服务器去负载。
  7. 做好硬件服务器健康状态监控,一旦某个服务器的资源消耗久高不下,应及时排查问题。

软件优化:

MySQL软件本身设计已经非常合理,并且是开源的。

如果面对高并发业务,达到一定量级,只要消耗的成本大于二次深度定制MySQL的研发成本,完全可以根据自身业务重新改写MySQL内部组件,如:改掉MySQL默认优化规则、去掉MySQL缓存、将MySQL缓存与Redis缓存直接整合,省去应用层面的缓存操作等等;

调整MySQL服务端的线程池、缓存配置,针对不同的场景,采用合理的存储引擎等等。

至于调整多少,应该根据硬件服务器的水平来进行调整,压测。还有就是操作系统本身也应该适当优化,如:授予MySQL进程最大能同时打开的句柄数等等。

表结构设计:

将不常用的字段,拆分到子表中,子表中使用外键关联主表的主键;

设计一些冗余字段,尽量能通过单表查询的操作,就不要多表连接查询;

针对高频查询的字段,建立索引。

针对业务上可能经常组合使用的字段,创建组合索引。

SQL语句优化:

通过EXPLAIN工具分析SQL执行计划,通过开启慢查询捕获性能低的SQL语句,然后进行分析和优化。通常是考虑到充分利用索引,避免索引失效这些问题。

其他需要注意的就是,在日常使用中,但凡涉及到大量数据更新、表结构修改等操作时,都要慎重考虑,根据实际情况来处理。

标签:缓存,mysql,查询,干货,MySQL,服务器,磁盘,优化
From: https://www.cnblogs.com/weiansheng/p/17120725.html

相关文章