关于数据库服务器资源降配的效能分析
案例目前公司的订单中心是MySQL分片集群其有128个分片组成使用的固态硬盘是NVMe SSD。库存中SATA SSD比较富裕NVMe SSD相对紧张因而需要DBA评估用SATA SSD替代NVMe SSD的可行性和风险。直接看下两者的关键区别对比维度SATA SSDNVMe SSD本质区别使用为机械硬盘设计的旧协议 (AHCI)使用为闪存设计的专属新协议 (NVMe)通信接口SATA 接口带宽上限约 600 MB/sPCIe 接口直连CPU速度无上限速度表现顺序读写约 550 MB/s顺序读写可达 3,500 ~ 14,000 MB/s响应延迟较高约 100 微秒极低约 10-20 微秒其读/写性能差异很是很大的。二小批量验证为了减少替换带来的影响先从影响小的下手。先把其中个分片的从节点替换为了SATA SSD从节点有部分读业务观察运行两周其CPU、内存、IOait、TPS、QPS等指标运行还是平稳的也在合理的区间和 NVMe SSD 横向相比CPU、IOait指标有增加但是还可以内存、TPS、QPS的变化不明显。两周后将这4个从节点升级成了主节点。即目前 128套集群有4套运行在 SATA SSD124套 运行在了 NVMe SSD 上。切换3个月来业务系统运行还算正常。三 分析与总结如果只是从小批量试运行的效果来看是令人满意的。可是不是就可以放心的替换呢我们还做了以下分析。3.1 分析慢查询将这4个SATA SSD的服务器划为一组再随机抽取5个 NVMe SSD划为对照组分析慢查询的情况。慢查询的数据量增长了3.7倍。梳理的比较的格式如下:比较NVMe SSDSATA SSD慢查询总数慢查询执行时间的中位数6S 慢查询的数量6S 4S 慢查询的数量4S 2S 慢查询的数量3.2 分析DDL操作这个一定要分析总结但也容易被忽略。因为DDL操作是MySQL 最耗资源的一种操作当然也是运维的核心变更之一。系统使用的MySQL版本是5.7所以选择什么样的DDL语句才能说明问题是关键。知识补充OperationIn PlaceRebuilds TablePermits Concurrent DMLOnly Modifies MetadataAdding a columnYesYesYes*NoDropping a columnYesYesYesNoRenaming a columnYesNoYes*YesReordering columnsYesYesYesNoSetting a column default valueYesNoYesYesChanging the column data typeNoYesNoNoExtendingVARCHARcolumn sizeYesNoYesYesDropping the column default valueYesNoYesYesChanging the auto-increment valueYesNoYesNo*Making a columnNULLYesYes*YesNoMaking a columnNOT NULLYes*Yes*YesNoModifying the definition of anENUMorSETcolumnYesNoYesYes涉及 Rebuilds Table 的操作都是一个高消耗的操作消耗的资源比较多同时执行时间也比较长。一定要注意的是 修改字段长度不一定不 Rebuilds Table 其实它有一个零界值的。The number of length bytes required by a VARCHAR column must remain the same. For VARCHAR columns of 0 to 255 bytes in size, one length byte is required to encode the value. For VARCHAR columns of 256 bytes in size or more, two length bytes are required. As a result, in-place ALTER TABLE only supports increasing VARCHAR column size from 0 to 255 bytes, or from 256 bytes to a greater size. In-place ALTER TABLE does not support increasing the size of a VARCHAR column from less than 256 bytes to a size equal to or greater than 256 bytes. In this case, the number of required length bytes changes from 1 to 2, which is only supported by a table copy (ALGORITHMCOPY). For example, attempting to change VARCHAR column size for a single byte character set from VARCHAR(255) to VARCHAR(256) using in-place ALTER TABLE returns this error:ALTER TABLE tbl_name ALGORITHMINPLACE, CHANGE COLUMN c1 c1 VARCHAR(256); ERROR 0A000: ALGORITHMINPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHMCOPY.具体细节参照官网:https://dev.mysql.com/doc/refman/5.7/en/innodb-online-ddl-operations.html言归正传,聚焦最近的DDL操作。Review替换以来的所有DDL变更发现 在所有的集群中执行最慢的永远都是这4台SATA SSD的分片并且执行时间明显的比其它组长很多。以给150G左右的一张表的添加字段为例两者相比NVMe SSD 与 SATA SSD其执行时间由原来的1.5 小时增长到了3 小时以上。即DDL的执行时间增长了1.5倍是原来的2.5倍。再看添加索引操作。add index虽然无需Rebuilds Table但是涉及新建index的结构也是一个耗时操作从中也能体现两者性能差异。果然如此耗时最久的依然是SATA SSD的分片执行时间大大增加了。不利因素不仅仅是执行时间变本身。此外DDL执行时间长出问题的风险就变大。拿过往的经验举个例子添加索引OperationIn PlaceRebuilds TablePermits Concurrent DMLOnly Modifies MetadataCreating or adding a secondary indexYesNoYesNoDropping an indexYesNoYesYesRenaming an indexYesNoYesYesAdding aFULLTEXTindexYes*No*NoNoAdding aSPATIALindexYesNoNoNoChanging the index typeYesNoYesYes按照官方的说明添加索引无需Rebuilds Table允许Permits Concurrent DML。但恰恰是这种操作引发过两个故障。故障1因为add index ,会由大量的io操作导致DB Server 下降引发了大量的慢查询和事务堆积。故障2这次故障比故障1更严重读写都不可用了。堆积了大量事务正在运行的SQLThreads_running由平常的10多个快速增长到 600堆积无法处理---堆积的事务状态为【Waiting for table flush】。不得不进行killKill Add index 的事务后系统立马恢复了。故障2,难解。3.3 对主从延迟的影响类似于 慢查询 的现象通过监控数据分析发现SATA SSD 发生主从延迟的概率增加了很多并且延迟值明显比对照组的要大。主从延迟不仅会影响的业务的读写分离还会影响主从切换影响高可用。3.4 其它影响分析最近的一次OOM切换恰恰发生在SATA SSD的节点上。此外虽然orchestrator对其进行了主从切换但中间有3个事务丢失和业务确认后DBA需手动补全。OOM和数据丢失与性能的关系还需要更多的理论解析和实践说明但需留意。四. 概况总结从直观来看资源降配看似对应用系统的影响不大但对运维和高IO的操作来讲会带来很大的挑战。建议1针对慢查询请研发确认是否可以接受、是否可以优化改进SQL语句2针对DDL的耗时增加需要评估是否可以接受是否可以对MySQL版本进行升级例如升级到8.03细化监控、增加完善及时告警如有异常可以及时止损。后记这种境况让我联想到“坐船渡河”。

相关新闻

Soundify Vocal Remover 本地 AI 音频分轨工具完整技术实操指南

Soundify Vocal Remover 本地 AI 音频分轨工具完整技术实操指南

一、工具概述 Soundify Vocal Remover 是基于 AI 声源分离算法开发的本地离线音频处理程序,核心作用为将混合音频拆解为独立人声、乐器音轨,无需上传音频至云端服务器。对比在线音频分离网站、专业本地工具 UVR5,该软件封装了复杂算法参数&a…

2026/6/25 22:22:03阅读更多 →
ChanlunX缠论插件:5分钟实现通达信智能缠论分析

ChanlunX缠论插件:5分钟实现通达信智能缠论分析

ChanlunX缠论插件:5分钟实现通达信智能缠论分析 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX 还在为复杂的缠论分析感到困惑吗?面对K线图上密密麻麻的走势,手动绘制笔…

2026/6/25 22:22:03阅读更多 →
计算机毕业设计之基于Java的私人牙科诊治管理系统的设计与实现

计算机毕业设计之基于Java的私人牙科诊治管理系统的设计与实现

私人牙科诊治管理系统设计的目的是为用户提供科室信息、值班医生、用药指南等功能。与其它应用程序相比,私人牙科诊治管理的设计主要面向于牙科诊治,旨在为管理员和医生信息、用户提供一个私人牙科诊治管理系统。用户可以通过系统及时查看科室信息、预约…

2026/6/25 22:17:02阅读更多 →
明明连接的是Redis的DB0,为什么能查到DB3的数据?

明明连接的是Redis的DB0,为什么能查到DB3的数据?

Redis Single 开发过程中,图简单省事,Redis 一般会采用单机模式部署 Spring Boot 应用连接 Redis 配置很简单 spring:redis:database: 8port: 6379password: ******timeout: 1000host: 10.106.22.184如上配置连接的是 Redis 的 DB8 数据库。有些时候为…

2026/6/25 23:47:13阅读更多 →
Web安全攻防:RCE与文件包含漏洞原理、利用与防御实战

Web安全攻防:RCE与文件包含漏洞原理、利用与防御实战

1. 项目概述:从“黑盒”到“白盒”的必经之路刚入行那会儿,听到“RCE”和“文件包含”这些词,总觉得是高手才能玩转的东西,带着一层神秘面纱。后来自己上手做项目,才发现它们其实是Web安全测试里最基础、也最致命的“敲…

2026/6/25 23:47:13阅读更多 →
(论文速读)PFGM++:释放受物理启发的生成模型的潜力

(论文速读)PFGM++:释放受物理启发的生成模型的潜力

论文题目:PFGM: Unlocking the Potential of Physics-Inspired Generative Models(PFGM:释放受物理启发的生成模型的潜力) 会议:ICML2023 摘要:我们介绍了一类新的受物理启发的生成模型,称为PF…

2026/6/25 23:47:13阅读更多 →
3步解锁Roblox帧率限制:完整教程与优化指南

3步解锁Roblox帧率限制:完整教程与优化指南

3步解锁Roblox帧率限制:完整教程与优化指南 【免费下载链接】rbxfpsunlocker FPS Unlocker for Roblox 项目地址: https://gitcode.com/gh_mirrors/rb/rbxfpsunlocker 还在为Roblox游戏的60帧限制而烦恼吗?想要在高性能显示器上享受更流畅的游戏体…

2026/6/25 23:47:13阅读更多 →
新能源工程师培训哪家好?电工转行光伏储能实操避坑

新能源工程师培训哪家好?电工转行光伏储能实操避坑

双碳风口下光伏、户用储能、工商业储能项目遍地开花,市场急需持证新能源工程师,论坛不少水电工、装修师傅、机房运维发帖询问新能源工程师培训哪家好,市面上低价线上速成课层出不穷,踩坑之后既浪费金钱又耽误转行节奏。市面上大部…

2026/6/25 23:47:13阅读更多 →
Azure ML数据与模型漂移检测实战:从告警到闭环治理

Azure ML数据与模型漂移检测实战:从告警到闭环治理

1. 项目概述:为什么“抓牢”数据与模型漂移是生产环境里最硬的生存技能在 Azure Machine Learning 平台上部署一个准确率 92% 的故障预测模型,和让这个模型在产线连续稳定运行 18 个月、持续支撑设备停机决策——这是两件完全不同的事。前者是数据科学实…

2026/6/25 23:42:13阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/25 9:39:54阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/25 2:52:24阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/25 9:01:34阅读更多 →
面试辅助工具横评:我试了5款AI面试工具,最后留下了OfferGo

面试辅助工具横评:我试了5款AI面试工具,最后留下了OfferGo

上半年跳槽,面了十几家公司。说句实话,不是能力不行,是面试现场太容易崩了。 明明准备了一周,面试官换个问法脑子就一片白。面完之后那个懊悔——其实我会的。 后来开始试市面上的AI面试辅助工具。前前后后装了5款,踩…

2026/6/25 11:52:11阅读更多 →
Claude Code 提示词设计:从塑造“人格”到建立“状态机”

Claude Code 提示词设计:从塑造“人格”到建立“状态机”

当前 AI Agent 设计的核心痛点在于:大模型不缺写代码的能力,缺的是克制力、边界感和验证逻辑。Prompt 不再是用来塑造“人格”的,而是用来建立“状态机(State Machine)”和“行为门禁(Guardrails&#xff0…

2026/6/25 11:52:11阅读更多 →
MC-037 | 自定义 Skill 开发:创建你的AI能力模块

MC-037 | 自定义 Skill 开发:创建你的AI能力模块

MONKEYCODE 教程系列 MonkeyCode教程及推广系列 MC-037 自定义 Skill 开发:创建你的AI能力模块 >官网链接注册更放心哦https://monkeycode-ai.com/?ic019e0aed-c823-783c-b08a-4f030f891e4e 系列: 不爱土豆唯爱马铃薯 MonkeyCode 教程系列 字数: 约 1400 字…

2026/6/25 11:52:11阅读更多 →