婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySQL快速對比數據技巧

MySQL快速對比數據技巧

熱門標簽:凱立德科技館地圖標注 甘孜電話機器人廠家 中科嘉智人工智能電銷機器人 銀川電銷外呼系統定制 哈爾濱crm外呼系統價格 電銷機器人好品牌門薩維l 做地圖標注都需要什么工具 西安400電話在哪里辦理 上海智能外呼系統需要多少錢

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

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

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

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

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

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

## 獲取列名的拼接串
SELECT
GROUP_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:

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

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

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

假設我們按照1000行一組來進行對比,如果需要將分組后的結果合并,需要使用GROUP_CONCAT函數,注意在GROUP_CONCAT函數中添加排序保證合并數據的順序, 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)

執行結果為:

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

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

最終對比圖:

PS:

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

您可能感興趣的文章:
  • mysql 5.7.20常用下載、安裝和配置方法及簡單操作技巧(解壓版免安裝)
  • JavaWeb連接數據庫MySQL的操作技巧
  • 利用tcpdump對mysql進行抓包操作技巧
  • 30個mysql千萬級大數據SQL查詢優化技巧詳解
  • Mysql根據時間查詢日期的優化技巧
  • 提升MYSQL查詢效率的10個SQL語句優化技巧
  • MySQL使用的常見問題解決與應用技巧匯總
  • 5個保護MySQL數據倉庫的小技巧
  • 分享101個MySQL調試與優化技巧
  • MySql Sql 優化技巧分享
  • MySQL注入繞開過濾的技巧總結
  • MySQL數據庫常用操作技巧總結

標簽:安康 山南 那曲 濮陽 平頂山 四川 浙江 安徽

巨人網絡通訊聲明:本文標題《MySQL快速對比數據技巧》,本文關鍵詞  MySQL,快速,對比,數據,技巧,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL快速對比數據技巧》相關的同類信息!
  • 本頁收集關于MySQL快速對比數據技巧的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 隆昌县| 湄潭县| 垦利县| 长汀县| 镶黄旗| 宁化县| 肥乡县| 新安县| 丹阳市| 临邑县| 贵南县| 莒南县| 绿春县| 和静县| 都江堰市| 广宗县| 绥中县| 乐都县| 庆安县| 日喀则市| 二连浩特市| 阿尔山市| 综艺| 广灵县| 松阳县| 常州市| 夹江县| 龙州县| 彰化市| 米林县| 托克托县| 民勤县| 长泰县| 苗栗市| 柘荣县| 南开区| 新巴尔虎右旗| 芮城县| 西盟| 平乐县| 蒙山县|