mysql數(shù)據(jù)批量同步導(dǎo)入elasticsearch

背景:

對于數(shù)據(jù)的列表拉取響應(yīng)變慢,數(shù)據(jù)需要從mysql遷移到es秆麸,從而數(shù)據(jù)從es進(jìn)行讀瘸踵凇;

解決思路:

由于數(shù)據(jù)量太大沮趣,需要每批從mysql進(jìn)行數(shù)據(jù)查詢進(jìn)行導(dǎo)入到es屯烦;

方案一:

從mysql分頁根據(jù)offset、limit進(jìn)行查詢

方案二:

由于方案一在測試過程中offset越大,查詢的時間越長驻龟,在測試庫中到50萬條只有需要解決1s時間温眉。
由于使用es過程中了解到,es查詢可以使用 search after翁狐,那么是否mysql這么使用也能提高查詢效率呢类溢?

使用這種方案明顯查詢效率得到了明顯的提高

方案介紹:

方案一:

從mysql分頁根據(jù)offset、limit進(jìn)行查詢

select
       id,user_age,user_name
       from message_test
       ORDER BY id
   limit #{offset} , #{limit}

自測環(huán)境剛開始時間 14:22:08.786 --> 14:22:08.845 花了59ms 的時間

2019-09-12 14:22:08.786 [http-nio-7012-exec-10] DEBUG c.y.s.m.d.M.selectMysqlToES - ==>  Preparing: select id,user_age,user_name from message_test ORDER BY id limit ? , ? 
2019-09-12 14:22:08.786 [http-nio-7012-exec-10] DEBUG c.y.s.m.d.M.selectMysqlToES - ==> Parameters: 0(Long), 1000(Long)
2019-09-12 14:22:08.845 [http-nio-7012-exec-10] DEBUG c.y.s.m.d.M.selectMysqlToES - <==      Total: 1000

到80萬數(shù)據(jù)的時間露懒,可以看出已經(jīng)花了 14:32:42.027->14:32:43.464 花了1437ms 的時間

2019-09-12 14:32:42.027 [http-nio-7012-exec-10] DEBUG c.y.s.m.d.M.selectMysqlToES - ==>  Preparing: select id,user_age,user_name from message_test ORDER BY id limit ? , ? 
2019-09-12 14:32:42.027 [http-nio-7012-exec-10] DEBUG c.y.s.m.d.M.selectMysqlToES - ==> Parameters: 816000(Long), 1000(Long)
2019-09-12 14:32:43.464 [http-nio-7012-exec-10] DEBUG c.y.s.m.d.M.selectMysqlToES - <==      Total: 556

整個流程下來闯冷,同步81萬條數(shù)據(jù), 從mysql查詢81萬條數(shù)據(jù)懈词,然后插入到es蛇耀,總共花了10min 34s 678ms

2019-09-12 14:22:08.786   開始時間
2019-09-12 14:32:43.464    結(jié)束時間
方案二:

由于方案一在測試過程中offset越大,查詢的時間越長钦睡,要是數(shù)據(jù)量越大蒂窒,導(dǎo)致整個過程就會花費很多時間。
在使用es過程中了解到荞怒,es支持 search after洒琢,那么使用mysql查詢數(shù)據(jù)學(xué)習(xí)search after的思路,提高查詢效率

select
       id,user_age,user_name
       from message_test
       WHERE id > #{id}
       ORDER BY id
             limit #{limit}

第一次查詢的時候 14:42:37.071 --> 14:42:37.109 花了38 ms

14:42:37.071 [main] DEBUG c.y.s.m.d.M.selectMysqlToESSearchAfter - ==>  Preparing: select id,user_age,user_name from message_test WHERE id > ? ORDER BY id limit ? 
14:42:37.071 [main] DEBUG c.y.s.m.d.M.selectMysqlToESSearchAfter - ==> Parameters: 0(Long), 1000(Long)
14:42:37.109 [main] DEBUG c.y.s.m.d.M.selectMysqlToESSearchAfter - <==      Total: 1000

最后一次查詢的時候 14:44:30.645 --> 14:44:30.651 花了6 ms
可以看出后面數(shù)據(jù)的查詢并不會收到影響

14:44:30.645 [main] DEBUG c.y.s.m.d.M.selectMysqlToESSearchAfter - ==>  Preparing: select id,user_age,user_name from message_test WHERE id > ? ORDER BY id limit ? 
14:44:30.645 [main] DEBUG c.y.s.m.d.M.selectMysqlToESSearchAfter - ==> Parameters: 3061952(Long), 1000(Long)
14:44:30.651 [main] DEBUG c.y.s.m.d.M.selectMysqlToESSearchAfter - <==      Total: 426

總的時間褐桌, 查詢81萬條數(shù)據(jù)衰抑,插入到es,總的時間花了1分53s時間荧嵌。

14:42:37.071
14:44:30.651

使用這種方案明顯查詢效率得到了明顯的提高

總結(jié):

參考elasticsearch的設(shè)計呛踊,可以提升效率,節(jié)約不必要的開銷啦撮;在以后設(shè)計一些中間件和業(yè)務(wù)代碼的過程中可以借鑒其它中間件的好的技術(shù)方案谭网,運(yùn)用到自己的設(shè)計系統(tǒng)設(shè)計中;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赃春,一起剝皮案震驚了整個濱河市愉择,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌织中,老刑警劉巖锥涕,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異狭吼,居然都是意外死亡层坠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門刁笙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來破花,“玉大人谦趣,你說我怎么就攤上這事【善颍” “怎么了蔚润?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵磅氨,是天一觀的道長尺栖。 經(jīng)常有香客問我,道長烦租,這世上最難降的妖魔是什么延赌? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮叉橱,結(jié)果婚禮上挫以,老公的妹妹穿的比我還像新娘。我一直安慰自己窃祝,他們只是感情好掐松,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著粪小,像睡著了一般大磺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上探膊,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天杠愧,我揣著相機(jī)與錄音,去河邊找鬼逞壁。 笑死流济,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的腌闯。 我是一名探鬼主播绳瘟,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼姿骏!你這毒婦竟也來了糖声?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤工腋,失蹤者是張志新(化名)和其女友劉穎姨丈,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體擅腰,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡蟋恬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了趁冈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片歼争。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡拜马,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出沐绒,到底是詐尸還是另有隱情俩莽,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布乔遮,位于F島的核電站扮超,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蹋肮。R本人自食惡果不足惜出刷,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坯辩。 院中可真熱鬧馁龟,春花似錦、人聲如沸漆魔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽改抡。三九已至矢炼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雀摘,已是汗流浹背裸删。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留阵赠,地道東北人涯塔。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像清蚀,于是被迫代替她去往敵國和親匕荸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345