gt-checksum v4.0.2 来了,换个校验引擎,效率起飞

MySQL-mysqlslap基准测试工具详解 1. 读取配置文件 /etc/mysql/mysqld.cnf2. 连接远程数据库 10.x.x.x:3306(root / Root)3. 选定 mysql 库作为测试库(--create-schema)4. 以 InnoDB 引擎为测试目标(--engine)5. 开启 100 个并发连接(--concurrency)6. 共执行 2000 次 SELECT * FROM user WHERE user='root'(--number-of-queries) 阅读详情

灵魂拷问:数据校验到底慢在哪?

十个人有九个会说「数据库查询」「网络 I/O」。没毛病,但还有个藏得很深的「时间小偷」——哈希计算。当表够大、字段够宽,它能悄悄偷走一大块 CPU。

这次 v4.0.2 就是来抓这个小偷的:我们把用了很久的 MD5 换成了飞快的 XXHash64,重点是 一行配置都不用改,升级就提速。

就问动心了没!

这版都改了啥

gt-checksum 是一款面向 MySQL / Oracle 的高并发数据校验与修复工具。v4.0.2 走的是「性能 + 体验」两条腿一起跑的路线,这次主要有四大变化:

  • 换引擎:默认哈希从 MD5 升级到 XXHash64,部分场景中哈希计算快约 15-25 倍。
  • 调解析:跨多行 SQL 改成整块一次性解析,长语句不再被反复「嚼」。
  • 优输出:多值 INSERT 修复 SQL 改成「一 value 一行」,看着就舒服。
  • 修顽疾:干掉了 table 模式下多行 INSERT 读回错乱这个老毛病。

被大表校验耗时折磨过的朋友,这版真的可以冲。

v4.0.1 vs v4.0.2 秒看懂

维度v4.0.1v4.0.2变化
默认哈希算法MD5(硬编码)XXHash64计算快 15-25 倍
算法可选不可选hashAlgorithm 参数切换新增灵活性
跨多行 SQL 解析逐行推进整块一次性解析长语句开销大降
多值 INSERT 输出多行挤在一起一 value 一行更易读易 diff
table 模式多行 INSERT读回可能错乱完整正确还原关键修复
checksum 核心测试覆盖有限单测补齐回归有保障

哈希计算这块的速度差距,大概是这个感觉:

哈希计算耗时(越短越快,示意图)

MD5      ████████████████████████████  慢
XXHash64 █▏                            快(约 1/15 ~ 1/25)

端到端整体性能(受 DB 查询 + 网络 IO 制约)
v4.0.1   ██████████████████████
v4.0.2   ████████████▏          ↑ 提速约 30% ~ 50%

小提示:哈希只是校验链路的一环,端到端还得看数据库和网络的脸色,所以整体提速是 30%-50%,而不总是 15-25 倍。

1、XXHash64 荣升默认哈希

为啥要换掉 MD5

在 checkObject=data 模式下,gt-checksum 要给每一行数据算哈希再比对。过去这里写死用 MD5——它安全、通用,可问题是它为「密码学级别的抗碰撞」买了单。但大多数场景中,数据校验根本不需要那么强的安全性,我们只要「够快 + 碰撞概率足够低」就
行。

XXHash64 简直是为这个场景量身定做:主打一个「快」,属于非密码学高速哈希,哈希计算部分比 MD5 快约 15-25 倍。放到完整校验流程里,因为还受数据库查询和网络 IO 拖累,实测整体能提升 30%-50%。

怎么用?答案是——啥也不用做

真的,升级完不用动任何配置,默认就吃上 XXHash64 了。

想手动指定?新参数 hashAlgorithm 安排:

; 设置数据校验使用的哈希算法,可选 [xxhash64 | md5],默认 xxhash64
; xxhash64:性能约为 MD5 的 15-25 倍,推荐使用
; md5:向后兼容旧版本行为
hashAlgorithm = xxhash64

有个坑必须提醒

哈希算法一换,新旧算法算出来的校验结果就没法直接对比了。所以记住两条:

  • 全新校验任务 → 保持默认 xxhash64,无需修改配置参数。
  • 要和旧版本历史结果对齐 → 显式设 hashAlgorithm = md5 回到从前。

一句话:只有当你要跟旧版本结果比对时,才需要把算法调回 md5。

2、SQL 解析整块化,长语句不再拖后腿

修复流程里,gt-checksum 得解析修复 SQL。老实现遇到跨多行的语句是「一行一行往前挪」,语句一长就得反复扫,白白浪费开销。

v4.0.2 改成整块一次性解析,一口气搞定,不再逐行反复嚼。语句越长、跨行越多,省得越多——批量 INSERT 的修复场景直接受益。

3、多值 INSERT 修复 SQL,一 value 一行

以前生成多值 INSERT 修复 SQL,多行数据全挤成一坨,人看着头大,后续处理还容易踩坑。

新版把每个 value 拆成独立一行:

INSERT INTO `db`.`tbl` (`id`, `name`) VALUES
(1, 'a'),
(2, 'b'),
(3, 'c');

排版一清爽,人工核对、diff 比对、翻日志,全都省心。

P.S,这是从 MySQL 2026.7 新版本中获得的灵感。

4、干掉 table 模式多行 INSERT 读回错乱

这是本次一个关键 Bug 修复,得重点说说。

table 模式下,修复 SQL 会先写进 stage 文件,再读回来执行。gt-checksum 靠「一行一条 SQL」的约定来切语句,可多行 INSERT 自带的换行偏偏破坏了这个约定,结果读回时语句被切错、内容全乱套。

v4.0.2 把写入和读回的逻辑理顺了,保证多行 INSERT 在 stage 文件里走一圈回来还是原样、完整正确。用 table 模式做数据修复的朋友,强烈建议尽快升级。

到底要不要升?对号入座

你的场景建议
常规数据校验直接升,默认 XXHash64 白嫖提速,配置一动不用动
需与旧版历史结果比对升完显式设 hashAlgorithm = md5
用 table 模式做数据修复优先升,修掉多行 INSERT 读回错乱
大量长语句 / 批量 INSERT 修复升完解析开销更低,更丝滑

写在最后

v4.0.2 没搞什么花架子,而是把「校验快不快、修复稳不稳、输出清不清爽」这几件基本功打磨得更扎实。换引擎的提速开箱即得,多行 INSERT 的修复更是堵上了一个真实的正确性漏洞。

升级体验一波,有问题尽管砸过来,我们接着聊。


完整变更请见项目 CHANGELOG.md;参数详情参见 gt-checksum-manual.md。

SpringBoot+Vue+MySQL 高校学科竞赛平台 完整可运行版(源码+文档) 本项目基于SpringBoot+Vue+MySQL构建高校学科竞赛管理平台,覆盖学生、教师、领队教师、管理员四大角色,实现竞赛发布、报名、刷题、评分、公示等全流程闭环管理。系统架构清晰,技术主流,配套完整源码、数据库脚本、万字论文、开题报告、答辩PPT及部署文档,支持一键运行,适用于毕业设计、课程设计及院系二次开发,真正实现“开箱即用”。 阅读详情

相关推荐

SpringBoot+Vue+MySQL 民宿在线预定平台 完整可运行版(源码+文档)

本文介绍一套基于SpringBoot+Vue+MySQL的民宿在线预订平台,涵盖用户与管理员双角色全流程功能,实现房源展示、订单管理、支付模拟、数据看板等闭环业务。系统架构清晰,前后端分离,附带完整源码、数据库脚本、万字论文、答辩PPT及部署文档,适合毕设、课程设计或小型民宿二次开发,开箱即用,快速落地。

招风的黑耳优快云 180

MySQL 索引深入理解:B+ 树、二级索引、联合索引与查询优化

理解二级索引后,就可以理解回表了。SELECT *MySQL 的执行过程分为三个步骤。覆盖索引(Covering Index)并不是一种独立的索引类型,而是一种查询效果。SQL 查询需要的所有字段,都能够直接从某个索引中获得,不需要再访问聚簇索引获取其他字段。例如:因为user_id已经包含在二级索引中,所以 MySQL 可以直接返回结果。不需要回表。联合索引(Composite Index)是同时使用多个字段建立的索引。它的排序规则是:首先按照user_id排序。当user_id。

m0_64642997的博客 135

S32DS新建工程、编译调试下载、导入工程详细介绍

新建了一个工程之后,下面简单介绍下基本的UI界面。其中最左下角那个是界面,这个界面很重要,是图形化配置界面,然后可以根据这些配置自动生成代码。其中,左边那些配置文件,都是系统帮我们创建好了的,我们其实可以直接用就行。有PE工具的调试,以及Jlink工具的调试。我目前使用到PE工具调试可以查看寄存器值,而Jlink调试查看不了寄存器值。连接了开发板之后,点击Debug就可以吧程序下载到芯片上了,而且可以进入到调试界面。

luobeihai的博客 2万+

MySQL 单点详解(14)

给定一条 SQL,联合索引的列该怎么排呢?

2401_88601046的博客 345

不止是打字机效果:手把手教你用SpannableStringBuilder打造Android富文本AI对话界面

本文详细介绍了如何使用SpannableStringBuilder在Android平台上构建专业级AI对话界面,涵盖流式文本处理、富文本解析、交互优化等核心技术。通过实战代码示例,帮助开发者实现类似DeepSeek的AI产品交互效果,提升用户体验和应用专业度。

weixin_28358083的博客 198

宝马项目化流程标准(BMW ABC flyer requirement)

宝马项目化流程标准(BMW ABC flyer requirement)

于大博 7252

MySQL 的 REPEATABLE READ 到底能不能防幻读——从快照读、当前读到 Next-Key Lock

本文系统讲解 InnoDB 可重复读级别下的幻读问题:从三类读异常切入,剖析快照读依赖 MVCC、当前读依赖 Next-Key Lock 的双防线机制,用双会话实验复现幻读仍会出现的边界场景,并解释各数据库在幻读防护上行为分歧的根源。

大模型全栈工程师 · Thanks_ks 297

维护测试监控LLM应用

LangFuse: 开源 + SaaS(免费/付费),LangSmith 平替,可集成 LangChain 也可直接对接 OpenAI API;LangSmith: LangChain 的官方平台,SaaS 服务(免费/付费),非开源,企业版支持私有部署;调试 Prompt 的 Playground测试/验证系统的相关指标数据集管理各种指标监控与统计:访问量、响应时长、Token 费等等。

SunnyRivers 1780

Flink SQL 连接器实战:MySQL Source、Flink CDC 与 JDBC Sink 全解析

提供有界流读取,适合批处理和维表场景,简单直接但无法感知变更。MySQL CDC提供无界流读取,通过「全量快照 + binlog 增量」的方式实现实时捕获,是实时数仓的核心入口,但需要 MySQL 侧正确配置 binlog 和权限。JDBC Sink负责结果回写,关键在于区分仅插入流和更新流,更新流必须依赖主键完成 upsert。掌握这三者的差异,本质上就是掌握了 Flink 中「有界与无界」「追加与更新」这两组最基本的语义。

2401_83857914的博客 455

ParaView: GUI 轴网格

ParaView: GUI 轴网格

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1923

使用SIMD思想进行memcpy的优化

arm64平台的memcpy的性能优化,相比C库提升30~40%,SIMD优化思路

zhaoxin1989的博客 1万+

MySQL 中 DISTINCT 与 GROUP BY 哪个效率更高?

DISTINCT与GROUP BY在纯去重场景下,MySQL 8.0 中执行计划通常一致,效率基本相同。老版本(8.0.13 之前)GROUP BY有隐式排序开销,DISTINCT往往更快。需要聚合或HAVING时,只能用GROUP BY。效率的真正决定因素是索引和执行计划,而不是这两个关键字本身。所以,与其问「哪个更快」,不如问「我的查询有没有走对索引」。

2601_96709915的博客 326

代谢组数据分析(二十一):通过MetaboAnalystR标准化构建sPLSDA预测模型

本文介绍了如何使用R语言中的MetaboAnalystR包和mixOmics包进行代谢组学数据的标准化和sPLSDA分析。MetaboAnalystR包用于数据预处理,包括数据初始化、清洗、补足、过滤和标准化等步骤,以确保数据质量。mixOmics包则用于sPLSDA分析,通过Lasso惩罚进行变量选择,并建立分类模型。文章详细说明了安装和加载相关R包的步骤,并提供了数据导入和预处理的代码示例。最后,强调了数据预处理的重要性,以确保后续分析的准确性和可靠性。

专注生信领域 2426

基于 FastAPI+LangChain+LangGraph+Agent+Vue3+MySQL 的房产数据采集与房价预测分析平台

本文介绍一个完整的「房产数据采集+AI房价预测」全栈项目,涵盖FastAPI异步后端、LangGraph Agent智能问答、爬虫采集、机器学习预测与Vue3前端,实现从数据采集到AI交互的闭环。项目融合多技术栈,具备真实业务场景与生产级设计(如降级策略、流式输出、多模型对比),兼具简历亮点与答辩演示优势,可系统性提升工程能力,并附高频面试题解析,是理想的技术综合实践项目。

深耕开发,专注编程实战。分享源码解析、项目搭建、问题排查笔记,沉淀技术,持续更新。 231

康耐视visionpro-CogCreateSegmentAvgSegsTool操作工具详细说明

康耐视visionpro-CogCreateSegmentAvgSegsTool操作工具详细说明

视觉人机器视觉的博客 1480

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

MySQL 8.0 双向主从复制故障修复与重建指南

MySQL 8.0 双向主从复制故障修复 SOP:XtraBackup 重建备用节点,解决 GTID 1236 / 历史日志冲突

「YYL DBA手记」 数据库 · 架构 · 运维 · 实战 yyldba.blog.youkuaiyun.com 298

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

MySQL 8.0停服了,信创替代的窗口正在关闭

最近跟几个做信创的朋友聊天,发现一个被忽略的问题。MySQL 8.0在今年4月正式停了官方支持,Oracle不再出安全补丁,bug也没人修了。但大量企业的业务系统还跑在上面。这事搁以前不算急,慢慢选就行了。但现在不行了,国资委79号文写得很清楚,2027年底前央国企核心系统得完成国产化替换。MySQL停服跟信创deadline撞在一起,留给MySQL用户做决定的时间不多了。我做过不少数据库迁移项目,MySQL替代这个事,坑比大多数人想的要多。今天聊几个我觉得最容易被忽视的点。

databasedb的博客 333

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

MySQL:库与表的操作

本文系统讲解MySQL库的操作,涵盖创建、查看、修改、删除数据库及字符集、校验规则的配置与影响。重点说明CREATE DATABASE语法、字符集(如utf8mb4)与校验规则(如utf8_general_ci vs utf8_bin)对大小写敏感性和排序的影响。通过实例演示不同校验规则下查询与排序结果差异。同时介绍SHOW DATABASES、USE、ALTER DATABASE、DROP DATABASE等操作,并强调备份恢复(mysqldump)与连接状态监控(SHOW PROCESSLIST)的重要

2401_87306079的博客 325

MySQL 主从复制进阶(2026):GTID、复制延迟排查与故障切换

load 高到底是 CPU 还是 IO?free 的 available 才是关键。us/sy/wa 决策树 + iostat/sar/iftop 实战,CPU/内存/磁盘/网络四大瓶颈定位方法论。

2502_91473995的博客 182

Linux、Shell、MySQL 测试卷逐题细讲(下篇:MySQL)

本文为Linux、Shell、MySQL测试卷下半段MySQL部分逐题讲解,包含填空、选择与SQL分析三类题型。填空题覆盖COUNT、HAVING、DISTINCT、事务、约束、索引等核心语法;选择题辨析存储过程、索引类型、ACID、存储引擎、用户管理等考点。SQL大题围绕员工、部门、职位、地点四张关联表,考察多表连接、分组聚合、自连接、相关子查询、NULL处理等高频写法,标注LEFT JOIN统计计数、NULL判断、子查询别名等易错坑点,同时梳理试卷OCR识别带来的干扰问题,重点提示SQL实操中的常见失误

dongziwen1的博客 185

任务4-1 了解MySQL的数据类型

本文梳理了MySQL数据类型:数值型涵盖整型与实型,金额首选DECIMAL;字符串型按长度与用途分为CHAR、VARCHAR、TEXT及BLOB;日期型包含DATE、TIME、DATETIME及TIMESTAMP;特殊类型有ENUM、JSON等。掌握类型特性是高效建表的基础。

howard2005的专栏 147

MySQL 为什么选择 B+ 树作为索引结构

B 树和 B+ 树都是多路平衡树,但 B+ 树在数据库场景下更有优势,主要体现在以下几个方面。对比对象主要问题B+ 树的优势二叉树 / 红黑树树高过大,I/O 次数多多路平衡,树高仅 3~4 层哈希表不支持范围查询、排序天然有序,支持范围与排序B 树节点存数据,扇出小;查询路径不一致非叶子只存键,扇出大;查询路径稳定B+ 树用更矮的树高减少磁盘 I/O,用有序的叶子链表支撑范围查询,用只存键的非叶子节点换取更大的扇出,是磁盘数据库索引场景下综合表现最优的选择。

2601_96129122的博客 319

mysql初阶--数据库设计

本文系统阐述数据库设计的核心方法论,从范式理论(1NF、2NF、3NF)出发,揭示数据冗余与操作异常的根源,强调3NF为工程实践的最优平衡点。通过E-R图构建实体关系模型,实现从业务需求到表结构的清晰映射。文章厘清类、实体、表三者对应关系,提出“抽象→建模→落地”的设计流程,帮助开发者建立可复用的数据库设计思维框架,避免“拍脑袋”建表的陷阱。

2601_97033068的博客 704

MySQL 高频面试题全解:索引失效、MVCC 与间隙锁、深度分页优化(2026 招聘 JD 真题复盘)

按 2026 招聘 JD 与一线面经整理 12 道 MySQL 高频题:B+树索引原理、聚簇索引与覆盖索引、最左前缀与索引失效真实场景、MVCC 与 ReadView、间隙锁与死锁实战、深度分页优化、慢 SQL 六步排查、count(*)、主从延迟、分库分表与两阶段提交,每题附可直接复述的工程化答案。

蒙眼过河 267

Flink 连接器选型实战:HDFS、Kafka、MySQL 与 Doris 的分层数据架构

连接器选型不是技术炫技,而是对数据特征的准确判断。HDFS承担离线归档与批处理,靠分区和滚动策略控制文件质量。Kafka是实时链路的中枢,靠分区、攒批和事务保证吞吐与一致性。MySQL只做维表和小结果集,靠缓存和限流保护在线库。Doris承接大数据量分析写入,靠分桶、攒批和两阶段提交保证性能与准确。把这四者按数据规模、延迟要求和一致性要求分层组合,就能搭出一套既稳定又可扩展的 Flink 数据架构。

2401_83857914的博客 409
上一篇: 那条突然变慢的 SQL,到底经历了什么?
下一篇: 实测GreatSQL 8.4.4-5新特性:大事务binlog独立落盘
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值