同步一張大表技術實現方案

2021-10-16 20:26:54 字數 1210 閱讀 5282

目錄

1、背景

2、技術方案

3、技術方案修正

3.2 改寫分頁sql

4 參考資料

表中有乙個主鍵字段,主鍵id是有時間特性,按照時間公升序增長的,可以認為id是雪花演算法生成的id,目前表中有1億條資料,我們需要把這1億條資料同步到es中。

我們將全表資料看成是乙個大的資料集,從邏輯上進行分頁,每頁每頁的資料進行同步。這是乙個比較粗糙的技術方案,真正執行過程中,會發現也存在深度分頁問題,每頁

顯示100條資料,第1頁查詢sql與執行計畫,如下:

第1000頁查詢sql與執行計畫,如下:

// 查詢結果: 1277546880860127232

select * from homework_wk_region where wk_region_id < 1277546880860127232  order by wk_region_id desc limit 100  ;
下面是它的執行計畫:

與之前的執行計畫相比,優化效果是比較明顯的。

deep paging optimization of mysql

快速複製一張大表討論

有這樣的一類需求,快速複製一張表,而這張表的資料量又非常的大。比方說本來是分割槽表,要把它重新變成非分割槽表,怎麼能夠快速的完成這樣的操作呢?我下面給出2種大致的方法 第一,就是利用ctas方式來建立一張新錶,當然要想加快速度,在資料庫不是force logging的前提下,可以使用nologgin...

如何快速查詢一張大表的前面資料

公司生產上面有一張表,裡面資料有 3486764條,每次想去查詢最新的幾條資料時總是很慢,以下為使用的語句 select from txn fin txn log t order by t.id desc 因為有order by語句會很慢,查詢出來將近1分鐘才能出來,有時候更長 經過腦海裡想了之後,...

mysql中實現在一張表中插入另一張

mysql在將一張表中的部分資料插入另一張表中分為兩種情況 1.兩張表中的字段相同 insert into 表一 select from 表2 where 條件 如果不想要某個字段重複的數,插入的sql語句如下 insert into 表一 select from 表二 where 表一的某個字段 ...