Code前端首页关于Code前端联系我们

史上最全面的MySQL性能优化理念和实践总结!

terry 2年前 (2023-09-26) 阅读数 43 #数据库

MySQL 对于许多 Linux 开发人员来说是一个非常困难的问题。大多数情况是因为他们不清楚数据库问题以及如何处理它。在安装MySQL之前需要了解的是MySQL的查询过程。许多查询优化任务仅遵循一些规则即可使 MySQL 优化器以预期且可接受的方式执行。

今天给大家带来MySQL优化的实战经验!

MySQL 高性能优化哲学与实战总结 史上最全!

图片-MySQL查询过程

2.优化哲学

注意:优化有危险,参与时要小心!

2.1。优化可能出现的问题

  • 优化并不总是在简单的环境中完成,也可能是在生产中安装的复杂系统。
  • 改善的方法非常危险,但你却没有机会去感受和预见!
  • 任何技术都可以解决问题,但一定有可能引发问题!
  • 要想改善,必须将解决问题所带来的问题控制在可以接受的范围内,才能达到效果。
  • 维持现状或更糟就是失败!

2.2。改进要求

  • 业务的稳定性和可持续性通常比成功更重要!
  • 进步必然涉及改变,而改变是危险的!
  • 提高性能的改善,维修和损坏都是同情况的潜在!
  • 请记住,改进应该是所有部门的协作和配合。没有任何一个实体可以改善数据!
  • 所以改进工作是由公司的需求驱动的! ! !

2.3。谁参与改进

在做数据库改进时,应该由数据库管理员、业务部门代表、应用架构师、应用开发人员、开发应用程序、硬件和系统管理员、存储管理员等来完成,而业务-相关人员。一起参与。

3。改进思路

3.1。改进什么

改进数据库主要有两个方面:安全性和性能。

  • 安全性 ---> 数据持久性
  • 性能 ---> 高数据访问性

3.2。需要改进的领域

存储、托管和操作系统:
  • 主机架构稳定性
  • I/O 规划和配置
  • 交换分区
  • 方面: 应用稳定性
  • SQL语句性能
  • 在线访问资源
  • 会话管理性能较差
  • 适合 MySQL 是这个应用:♿♽♽ 内存
  • 数据库系统(物理和逻辑)
  • 实例配置

注:无论是系统设计、部署问题还是改进,都可以按照这个顺序来实现。

3.3。优化维度

数据库优化有四个维度:
硬件、系统结构、数据库表结构、SQL和索引。

MySQL 高性能优化哲学与实战总结 史上最全!

优化选择:
  • 优化成本:硬件>系统配置>数据库表结构>SQL和索引
  • 优化效果:硬件系统-->应用-->数据库-->架构(高可用、读写分区、分库分库)
    处理说明:

    解释改进的目标、效率与安全之间的权衡以及防患于未然

    5.2。硬件优化

    主机方面:
    • 按数据类型、主机CPU选择、内存容量选择、磁盘选择
    • 内存和磁盘资源的平衡
    • 随机I/O和顺序I/OBBU主机 RAID 卡的(Battery Backup Unit)没电
    CPU 选择:
    • 两条 cpu 路径 因素:核心数、频率
    • 按类型不同公司选择:❀❀ -密集型:更多计算、OLTP主频较高、核心较多的CPU
    • IO密集型:问题相比之下,OLAP核心较多,主频不一定高。
    内存偏好:
    • OLAP类型数据库需要更多内存,这与数据可用性水平有关。
    • 一般OLTP类型数据的内存是CPU核数的2到4倍。没有最佳实践。
    存储:
    • 根据存储的数据类型选择不同的存储设备
    • 配置合理的RAID级别(raid5、raid10、热盘)
    • 针对特定操作系统,不需要专门的系统。最好做冗余(raid1)(ssd、sas、status)
    raid 卡:主机采集卡选择:
    • 执行操作系统磁盘重置(raid1)
    • 平衡内存和资源磁盘 I/O 和顺序 I/O
    • 主机 RAID 卡的 BBU(电池备份单元)必须关闭。
    网络设备:

    使用更高的流量来支持更高的网络设备(交换机、路由器、网线、网卡、HBA卡)

    注:系统设计时应考虑以上规划。

    5.3。服务器设备的改进

    • 1.物理光:
    • 2。配备管理设备:远程控制卡(FENCE设备:ipmi ilo idarc)、灯光开关、设备控制。
    • 3。第三方监控软件和工具(snmp、agent)监控物理设备
    • 4。存储设备:内置控制平台。 EMC2(被惠普收购)、日立(hds)、IBM低端OEM hds,高端存储是自有技术,华为存储

    5.4,系统优化

    Cpu:

    无需调整。 ,在选材方面就下功夫了。

    温馨提示:

    无需编辑,只需专注于选择工具即可。

    SWAP:

    MySQL 尝试避免使用交换。 0

    IO:
    • raid,无lvm、ext4或xfs、ssd、IO调度策略
    • Swap调整(请勿使用“♿swap”Linux)阿里云服务器默认swap。它是否倾向于使用交换或刷新文件系统缓存?在内存密集型情况下,较低的值往往会释放系统缓存。当然,这个参数可以减少使用swap的可能性,但是并不能阻止Linux使用swap。

      更改MySQL配置参数innodb_flush_method并启用O_DIRECT模式。在这种情况下,InnoDB的缓冲池会绕过文件系统缓存直接访问磁盘,但重做日志仍然会使用文件系统缓存。值得注意的是,重做日志处于覆盖模式。即使使用文件系统缓存,也不会占用太多

      IO调度策略:

      MySQL 高性能优化哲学与实战总结 史上最全!

      5.5、系统参数调整

      Linux系统内核优化参数:

      MySQL 高性能优化哲学与实战总结 史上最全!

      不需要限制用户设置以下设置:

      MySQL 高性能优化哲学与实战总结 史上最全!

      5.6、应用程序改进

      独立的业务应用程序和数据库应用程序、防火墙:iptables、selinux 和不必要的服务(已关闭):

      MySQL 高性能优化哲学与实战总结 史上最全!

      安装 对于图形界面服务器不启动。图形界面运行级别3。另外,想想我们公司将来是否真的需要MySQL,或者使用其他类型的数据库。数据使用的最高状态是没有数据使用。

      6.数据库优化

      SQL优化指南:

      执行计划、索引、编写SQL

      高级架构指南:最佳架构:分库分表

      6.1、验证数据库参数

      编辑:

      通用实例(高级优化、扩展)

      MySQL 高性能优化哲学与实战总结 史上最全!

      关系层(基本通信方式)❀安全连接SQL层(改进基本)
      • query_cache_size:针对
      • 查询缓存大小对于OLAP类型的数据库你需要重点增加这个内存缓存。
      • 但一般不会超过GB。
      • 对于频繁修改的数据,缓存会立即失效。
      • 我们可以使用内存数据库(redis、memecache)来替代它们的功能。

      6.2。存储引擎层(innodb核心优化参数)

      MySQL 高性能优化哲学与实战总结 史上最全!

      7参考文献

      [1] https://www.cnblogs.com/zishengY/p/6892345.html

      [2] https://www.. cnblogs.com/zishengY/p/6892345.html

      [2] https://www.jianshu.com/p/d7665192aaaf

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门