麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > MySQL > 正文

MySQL快速對比數據技巧

2024-07-24 13:15:26
字體:
來源:轉載
供稿:網友

在MySQL運維中,研發同事想對比下兩個不同實例上的數據并找出差異,除主鍵外還需要對比每一個字段,如何做呢?

第一種方案,寫程序將兩個實例上的每一行數據取出來進行對比,理論可行,但是對比時間較長。

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

首先要合并所有字段的值,選用MySQL提供的CONCAT函數,如果CONCAT函數中包含NULL值,會導致最終結果為NULL,因此需要使用IFNULL函數來替換NULL值,如:

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

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

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

假設我們有測試表:

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

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

SELECTid,MD5(CONCAT(IFNULL(id,''),IFNULL(c1,''),IFNULL(c2,''),)) AS md5_valueFROM t_test01

在兩個實例上執行下,然后把結果使用beyond compare對比下,就很容易找出不相同的行以及主鍵ID

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

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

SELECTmin(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_valueFROM t_test01GROUP BY (id div 1000)

執行結果為:

min_id  max_id  row_count  md5_value0    999    1000     7d49def23611f610849ef559677fec0c1000   1999    1000     95d61931aa5d3b48f1e38b3550daee082000   2999    1000     b02612548fae8a4455418365b3ae611a3000   3999    1000     fe798602ab9dd1c69b36a0da568b6dbb 

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

最終對比圖:

MySQL,對比數據

PS:

在使用GROUP_CONCAT時,需要配置MySQL變量group_concat_max_len,默認值為1024,超出部分會被階段。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产资源在线免费观看 | 国产精品久久久久久久久久三级 | 日韩av片网站| 视频一区二区在线观看 | 欧美性生活视频免费 | 在线91视频| 久久久久久亚洲综合影院红桃 | 一区二区精品视频在线观看 | 欧美激情在线播放 | 韩国一大片a毛片 | 视频h在线 | 成人毛片免费 | 国产精品久久久久免费视频 | 毛片在哪看| 欧美视频一区二区三区四区 | 国产亚洲精品久久久久婷婷瑜伽 | 性欧美xxxx免费岛国不卡电影 | 久久99网 | 免费a视频在线观看 | 成人男女啪啪免费观看网站四虎 | 国产精品成人免费一区久久羞羞 | 国产99久久久久久免费看农村 | 色淫湿视频 | 久久精品久 | a级高清免费毛片av在线 | 日韩黄色成人 | 国产日本在线播放 | 精品一区在线视频 | 2021国产精品视频 | 久草视频2 | 久久成人在线观看 | 欧美一区二区三区免费观看 | 国产精品刺激对白麻豆99 | 久久久久久久久久久久久久av | 黄视频网站免费在线观看 | 国产在线播放一区二区 | 毛片免费一区二区三区 | 红桃一区| 特级黄毛片 | 久久久久亚洲国产精品 | 看个毛片 |