MySQL快速对比数据技巧的示例分析


小编给大家分享一下MySQL快速对比数据技巧的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在MySQL运维中,研发同事想对比下两个不同实例上的数据并找出差异,除主键外还需要对比每一个字段,如何做呢?第一种方案,写程序将两个实例上的每一行数据取出来进行对比,理论可行,但是对比时间较长。第二种方案,对每一行数据所有字段合并起来,取checksum值,再按照checksum值对比,看着可行,尝试下。首先要合并所有字段的值,选用MySQL提供的CONCAT函数,如果CONCAT函数中包含NULL值,会导致最终结果为NULL,因此需要使用IFNULL函数开发云主机域名来替换NULL值,如:加入表有很多行,手动拼个脚本比较累,别急,可以使用information_schema.COLUMNS来处理:假设我们有测试表:我们便可以拼接出下面的SQL:在两个实例上执行下,然后把结果使用beyond compare对比下,就很容易找出不相同的行以及主键ID对于数据量较大的表,执行出来的结果集也很大,对比起来比较费劲,那就先尝试缩小结果集,可以将多行记录的md5值合并起来求MD5值,如果最后MD5值相同,则这些行相同,如果不同,则证明存在差异,再按照这些行进行逐行对比。假设我们按照1000行一组来进行对比,如果需要将分组后的结果合并,需要使用GROUP_CONCAT函数,注意在GROUP_CONCAT函数中添加排序保证合并数据的顺序, SQL如下:执行结果为:当差异数据较少时,即使需要对比上千万数据,我们可以轻松根据根据min_id和max_id来快速定位到哪1000条数据里存在差异,再进行逐行MD5值对比,最终找到差异行。最终对比图:PS:在使用GROUP_CONCAT时,需要配置MySQL变量group_concat_max_len,默认值为1024,超出部分会被阶段。看完了这篇文章,相信你对“MySQL快速对比数据技巧的示例分析”有了一定的了解,如果想了解更多相关知识,欢迎关注开发云行业资讯频道,感谢各位的阅读!

相关推荐: 怎样去除mysql表中的 r n

这篇文章主要介绍了怎样去除mysql表中的 r n,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。去除mysql表中的r n的方法:1、使用“ replace(字段名,char(13),”)”方法去…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/19 23:05
下一篇 06/19 23:05

相关推荐