最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL快速對(duì)比數(shù)據(jù)技巧

 更新時(shí)間:2018年02月05日 08:36:51   作者:笑東風(fēng)  
這篇文章主要介紹了MySQL快速對(duì)比數(shù)據(jù)的方法以及技巧分享,如果對(duì)此有興趣,一起跟著小編學(xué)習(xí)下吧。

在MySQL運(yùn)維中,研發(fā)同事想對(duì)比下兩個(gè)不同實(shí)例上的數(shù)據(jù)并找出差異,除主鍵外還需要對(duì)比每一個(gè)字段,如何做呢?

第一種方案,寫程序?qū)蓚€(gè)實(shí)例上的每一行數(shù)據(jù)取出來進(jìn)行對(duì)比,理論可行,但是對(duì)比時(shí)間較長(zhǎng)。

第二種方案,對(duì)每一行數(shù)據(jù)所有字段合并起來,取checksum值,再按照checksum值對(duì)比,看著可行,嘗試下。

首先要合并所有字段的值,選用MySQL提供的CONCAT函數(shù),如果CONCAT函數(shù)中包含NULL值,會(huì)導(dǎo)致最終結(jié)果為NULL,因此需要使用IFNULL函數(shù)來替換NULL值,如:

CONCAT(IFNULL(C1,''),IFNULL(C2,''))

加入表有很多行,手動(dòng)拼個(gè)腳本比較累,別急,可以使用information_schema.COLUMNS來處理:

## 獲取列名的拼接串
SELECT
GROUP_CONCAT('IFNULL(',COLUMN_NAME,','''')')
FROM information_schema.COLUMNS 
WHERE TABLE_NAME='table_name';

假設(shè)我們有測(cè)試表:

CREATE TABLE t_test01
(
 id INT AUTO_INCREMENT PRIMARY KEY,
 C1 INT,
 C2 INT
)

我們便可以拼接出下面的SQL:

SELECT
id,
MD5(CONCAT(
IFNULL(id,''),
IFNULL(c1,''),
IFNULL(c2,''),
)) AS md5_value
FROM t_test01

在兩個(gè)實(shí)例上執(zhí)行下,然后把結(jié)果使用beyond compare對(duì)比下,就很容易找出不相同的行以及主鍵ID

對(duì)于數(shù)據(jù)量較大的表,執(zhí)行出來的結(jié)果集也很大,對(duì)比起來比較費(fèi)勁,那就先嘗試縮小結(jié)果集,可以將多行記錄的md5值合并起來求MD5值,如果最后MD5值相同,則這些行相同,如果不同,則證明存在差異,再按照這些行進(jìn)行逐行對(duì)比。

假設(shè)我們按照1000行一組來進(jìn)行對(duì)比,如果需要將分組后的結(jié)果合并,需要使用GROUP_CONCAT函數(shù),注意在GROUP_CONCAT函數(shù)中添加排序保證合并數(shù)據(jù)的順序, SQL如下:

SELECT
min(id) as min_id,
max(id) as max_id,
count(1) as row_count,
MD5(GROUP_CONCAT(
MD5(CONCAT(
IFNULL(id,''),
IFNULL(c1,''),
IFNULL(c2,''),
)) ORDER BY id
))AS md5_value
FROM t_test01
GROUP BY (id div 1000)

執(zhí)行結(jié)果為:

min_id  max_id  row_count  md5_value
0    999    1000     7d49def23611f610849ef559677fec0c
1000   1999    1000     95d61931aa5d3b48f1e38b3550daee08
2000   2999    1000     b02612548fae8a4455418365b3ae611a
3000   3999    1000     fe798602ab9dd1c69b36a0da568b6dbb 

當(dāng)差異數(shù)據(jù)較少時(shí),即使需要對(duì)比上千萬數(shù)據(jù),我們可以輕松根據(jù)根據(jù)min_id和max_id來快速定位到哪1000條數(shù)據(jù)里存在差異,再進(jìn)行逐行MD5值對(duì)比,最終找到差異行。

最終對(duì)比圖:

PS:

在使用GROUP_CONCAT時(shí),需要配置MySQL變量group_concat_max_len,默認(rèn)值為1024,超出部分會(huì)被階段。

相關(guān)文章

  • MySQL中varchar類型的字段默認(rèn)值設(shè)置方式

    MySQL中varchar類型的字段默認(rèn)值設(shè)置方式

    這篇文章主要介紹了MySQL中varchar類型的字段默認(rèn)值設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 詳解GaussDB for MySQL性能優(yōu)化

    詳解GaussDB for MySQL性能優(yōu)化

    GaussDB(for MySQL)數(shù)據(jù)庫在寫入性能上,在業(yè)界同類產(chǎn)品中是最好的,這主要得益于GaussDB(for MySQL)在MySQL內(nèi)核方面的諸多優(yōu)化。其中有一項(xiàng)從“送快遞”得來靈感的優(yōu)化——事務(wù)異步提交,值得我們分析。
    2021-05-05
  • Docker Dockerfile構(gòu)建MySQL并初始化數(shù)據(jù)方式

    Docker Dockerfile構(gòu)建MySQL并初始化數(shù)據(jù)方式

    這篇文章主要介紹了Docker Dockerfile構(gòu)建MySQL并初始化數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 用MyEclipse配置DataBase Explorer(圖示)

    用MyEclipse配置DataBase Explorer(圖示)

    本文介紹了,用MyEclipse配置DataBase Explorer的圖片示例。需要的朋友參考下
    2013-04-04
  • 檢查MySQL中的列是否為空或Null的常用方法

    檢查MySQL中的列是否為空或Null的常用方法

    在MySQL數(shù)據(jù)庫中,我們經(jīng)常需要檢查某個(gè)列是否為空或Null,空值表示該列沒有被賦值,而Null表示該列的值是未知的或不存在的,在本文中,我們將討論如何在MySQL中檢查列是否為空或Null,并探討不同的方法和案例,需要的朋友可以參考下
    2023-11-11
  • cmd進(jìn)入mysql以及常用的mysql操作教程

    cmd進(jìn)入mysql以及常用的mysql操作教程

    對(duì)于從來自事計(jì)算機(jī)專業(yè)工作的人而言,MySQL并不陌生,下面這篇文章主要給大家介紹了關(guān)于cmd進(jìn)入mysql以及常用的mysql操作的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • Mysql索引詳細(xì)介紹

    Mysql索引詳細(xì)介紹

    這篇文章主要介紹了Mysql索引詳細(xì)介紹,本文講解了Mysql索引簡(jiǎn)介、設(shè)計(jì)索引的原則、如何使用索引等內(nèi)容,需要的朋友可以參考下
    2014-07-07
  • MySQL group_concat函數(shù)使用方法詳解

    MySQL group_concat函數(shù)使用方法詳解

    GROUP_CONCAT函數(shù)用于將GROUP BY產(chǎn)生的同一個(gè)分組中的值連接起來,返回一個(gè)字符串結(jié)果,接下來就給大家簡(jiǎn)單的介紹一下MySQL group_concat函數(shù)的使用方法,需要的朋友可以參考下
    2023-07-07
  • MySQL InnoDB引擎ibdata文件損壞/刪除后使用frm和ibd文件恢復(fù)數(shù)據(jù)

    MySQL InnoDB引擎ibdata文件損壞/刪除后使用frm和ibd文件恢復(fù)數(shù)據(jù)

    mysql的ibdata文件被誤刪、被惡意修改,沒有從庫和備份數(shù)據(jù)的情況下的數(shù)據(jù)恢復(fù),不能保證數(shù)據(jù)庫所有表數(shù)據(jù)的100%恢復(fù),目的是盡可能多的恢復(fù),下面是具體的操作方法
    2025-03-03
  • jQuery 綁定事件的方式總結(jié)

    jQuery 綁定事件的方式總結(jié)

    這篇文章主要介紹了jQuery 綁定事件的方式總結(jié)的相關(guān)資料,這里整理了幾種方法,需要的朋友可以參考下
    2016-11-11

最新評(píng)論

和林格尔县| 彭山县| 博兴县| 库车县| 台南县| 深州市| 孝昌县| 麻栗坡县| 体育| 利津县| 茶陵县| 弥渡县| 滨州市| 阿克陶县| 九江县| 仙桃市| 军事| 综艺| 浑源县| 昌平区| 禹州市| 五莲县| 建湖县| 常德市| 离岛区| 惠州市| 明水县| 金沙县| 三河市| 江口县| 通道| 东至县| 延边| 顺义区| 襄樊市| 汤原县| 宣城市| 鹤峰县| 班戈县| 庆元县| 松原市|