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

主頁 > 知識(shí)庫 > MySql 快速插入千萬級(jí)大數(shù)據(jù)的方法示例

MySql 快速插入千萬級(jí)大數(shù)據(jù)的方法示例

熱門標(biāo)簽:銅陵防封電銷卡 怎么在地圖標(biāo)注位置生成圖片 悟空科技電話機(jī)器人 美國反騷擾電話機(jī)器人 真人語音電話機(jī)器人 400電話可以免費(fèi)申請(qǐng)嗎 福建外呼系統(tǒng)定制化 電銷卡外呼系統(tǒng)供應(yīng)商 騰訊地圖標(biāo)注提升

在數(shù)據(jù)分析領(lǐng)域,數(shù)據(jù)庫是我們的好幫手。不僅可以接受我們的查詢時(shí)間,還可以在這基礎(chǔ)上做進(jìn)一步分析。所以,我們必然要在數(shù)據(jù)庫插入數(shù)據(jù)。在實(shí)際應(yīng)用中,我們經(jīng)常遇到千萬級(jí),甚至更大的數(shù)據(jù)量。如果沒有一個(gè)快速的插入方法,則會(huì)事倍功半,花費(fèi)大量的時(shí)間。

在參加阿里的天池大數(shù)據(jù)算法競(jìng)賽中(流行音樂趨勢(shì)預(yù)測(cè)),我遇到了這樣的問題,在沒有優(yōu)化數(shù)據(jù)庫查詢及插入之前,我花了不少冤枉時(shí)間,沒有優(yōu)化之前,1500萬條數(shù)據(jù),光插入操作就花費(fèi)了不可思議的12個(gè)小時(shí)以上(使用最基本的逐條插入)。這也促使我思考怎樣優(yōu)化數(shù)據(jù)庫插入及查詢操作,提高效率。

在不斷優(yōu)化過程中,性能有大幅提升。在按時(shí)間序列從數(shù)據(jù)庫查詢并匯總生成2萬6000多首歌曲的下載,播放,收藏?cái)?shù)過程中,通過查詢生成的操作速度提高從預(yù)估的40多小時(shí)降低到一小時(shí)多。在數(shù)據(jù)庫插入方面,性能得到大幅提升;在新的數(shù)據(jù)集上測(cè)試,5490萬+的數(shù)據(jù),20分鐘完成了插入。下面分享一下我的心得。

優(yōu)化過程分為2步。第一步,實(shí)驗(yàn)靜態(tài)reader從CSV文件讀取數(shù)據(jù),達(dá)到一定量時(shí),開始多線程插入數(shù)據(jù)庫程序;第二步,使用mysq批量插入操作。

第一步,讀取文件,開始插入多線程

在這里,達(dá)到一定量的量是個(gè)需要斟酌的問題,在我的實(shí)驗(yàn)中,開始使用100w作為這個(gè)量,但是出現(xiàn)了新的問題,Java 堆內(nèi)存溢出,最終采用了10W作為量的標(biāo)準(zhǔn)。

當(dāng)然,可以有其他的量,看大家自己喜歡那個(gè)了。

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
 
import preprocess.ImportDataBase;
 
public class MuiltThreadImportDB {
 
 /**
  * Java多線程讀大文件并入庫
  * 
  * @param args
  */
 private static int m_record = 99999;
 private static BufferedReader br = null;
 private ArrayListString> list;
 private static int m_thread = 0;
 static {
 try {
  br = new BufferedReader(
  new FileReader(
  "E:/tianci/IJCAI15 Data/data_format1/user_log_format1.csv"),8192);
 
 } catch (FileNotFoundException e) {
  e.printStackTrace();
 }
 try {
  br.readLine(); // 去掉CSV Header
 } catch (IOException e) {
  e.printStackTrace();
 }
 }
 
 public void start() {
 String line;
 int count = 0;
 list = new ArrayListString>(m_record + 1);
 synchronized (br) {
  try {
 while ((line = br.readLine()) != null) {
  if (count  m_record) {
 list.add(line);
 count++;
  } else {
 list.add(line);
 count = 0;
 Thread t1 = new Thread(new MultiThread(list),Integer.toString(m_thread++));
 t1.start();
 list = new ArrayListString>(m_record + 1);
  }
 }
 
 if (list != null) {
  Thread t1 = new Thread(new MultiThread(list),Integer.toString(m_thread++));
  t1.start();
 }
  } catch (IOException e) {
 e.printStackTrace();
  }
 }
 }
 
 public static void main(String[] args) {
 new MuiltThreadImportDB().start();
 } 
}

第二步,使用多線程,批量插入數(shù)據(jù)

class MultiThread implements Runnable {
 private ArrayListString> list;
 
 public MultiThread(ArrayListString> list) {
 this.list = list;
 }
 
 public void run() {
 try {
  ImportDataBase insert = new ImportDataBase(list);
  insert.start();
 } catch (FileNotFoundException e) {
  e.printStackTrace();
 }
 display(this.list);
 }
 
 public void display(ListString> list) {
 // for (String str : list) {
 // System.out.println(str);
 // }
 System.out.print(Thread.currentThread().getName() + " :");
 System.out.println(list.size());
 }
 
}

批量操作中,使用mysql的prepareStatement類,當(dāng)然也使用了statement類的批量操作,性能比不上前者。前者可以達(dá)到1w+每秒的插入速度,后者只有2000+;

public int insertUserBehaviour(ArrayListString> sqls) throws SQLException {
 
 String sql = "insert into user_behaviour_log (user_id,item_id,cat_id,merchant_id,brand_id,time_stamp,action_type)"
 + " values(?,?,?,?,?,?,?)";
 preStmt = conn.prepareStatement(sql);
 for (int i = 0; i  sqls.size(); i++) {
  UserLog log =new UserLog(sqls.get(i));
  preStmt.setString(1, log.getUser_id());
  preStmt.setString(2, log.getItem_id());
  preStmt.setString(3, log.getCat_id());
  preStmt.setString(4, log.getMerchant_id());
  preStmt.setString(5, log.getBrand_id());
  preStmt.setString(6, log.getTimeStamp());
  preStmt.setString(7, log.getActionType());
  preStmt.addBatch();
  if ((i + 1) % 10000 == 0) {
 preStmt.executeBatch();
 conn.commit();
 preStmt.clearBatch();
  }
 }
 preStmt.executeBatch();
 conn.commit();
 return 1;
 }

當(dāng)然,也實(shí)驗(yàn)了不同的mysql存儲(chǔ)引擎,InnoDB和MyISM,實(shí)驗(yàn)結(jié)果發(fā)現(xiàn),InnoDB更快(3倍左右),可能和mysq的新版本有關(guān)系,筆者的mysql版本是5.6。

最后總結(jié)一下,大數(shù)據(jù)量下,提高插入速度的方法。

Java代碼方面,使用多線程插入,并且使用批處理提交。

數(shù)據(jù)庫方面,表結(jié)構(gòu)建立時(shí)不要使用索引,要不然插入過程過還要維護(hù)索引B+樹;修改存儲(chǔ)引擎,一般默認(rèn)是InnoDB,(新版本就使用默認(rèn)就可以,老版本可能需要)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • mysql千萬級(jí)數(shù)據(jù)量根據(jù)索引優(yōu)化查詢速度的實(shí)現(xiàn)
  • MySQL循環(huán)插入千萬級(jí)數(shù)據(jù)
  • MySQL 千萬級(jí)數(shù)據(jù)量如何快速分頁
  • MySQL 快速刪除大量數(shù)據(jù)(千萬級(jí)別)的幾種實(shí)踐方案詳解
  • MySQL千萬級(jí)大數(shù)據(jù)SQL查詢優(yōu)化知識(shí)點(diǎn)總結(jié)
  • MySQL如何快速的創(chuàng)建千萬級(jí)測(cè)試數(shù)據(jù)
  • 30個(gè)mysql千萬級(jí)大數(shù)據(jù)SQL查詢優(yōu)化技巧詳解
  • mysql千萬級(jí)數(shù)據(jù)分頁查詢性能優(yōu)化
  • 如何優(yōu)化Mysql千萬級(jí)快速分頁
  • 詳解MySQL數(shù)據(jù)庫千萬級(jí)數(shù)據(jù)查詢和存儲(chǔ)

標(biāo)簽:臨汾 聊城 白銀 云浮 烏海 湖北 湖南 武威

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySql 快速插入千萬級(jí)大數(shù)據(jù)的方法示例》,本文關(guān)鍵詞  MySql,快速,插入,千萬,級(jí)大,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySql 快速插入千萬級(jí)大數(shù)據(jù)的方法示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于MySql 快速插入千萬級(jí)大數(shù)據(jù)的方法示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲同性同志一二三专区| 欧美精品三级在线观看| 久久久蜜桃精品| 国产一区二区三区美女| 国产精品视频一二三| 色哟哟国产精品| 偷拍亚洲欧洲综合| 精品少妇一区二区三区日产乱码 | 亚洲欧洲成人av每日更新| 97se亚洲国产综合自在线| 亚洲老妇xxxxxx| 91精品国产免费| 国产成人免费xxxxxxxx| 亚洲精品亚洲人成人网在线播放| 欧美日本韩国一区二区三区视频| 久久er99热精品一区二区| 国产精品丝袜久久久久久app| 色综合久久88色综合天天免费| 丝袜美腿亚洲综合| 国产午夜亚洲精品午夜鲁丝片| 一本大道综合伊人精品热热| 日韩一区精品字幕| 国产精品久久久久久久久果冻传媒| 欧美亚洲日本一区| 国产精品乡下勾搭老头1| 亚洲一二三区在线观看| 欧美变态口味重另类| 色又黄又爽网站www久久| 轻轻草成人在线| 日韩伦理免费电影| 精品999久久久| 欧美美女直播网站| 成人综合在线视频| 青青草97国产精品免费观看无弹窗版 | 不卡的av网站| 另类小说综合欧美亚洲| 亚洲精品网站在线观看| www国产精品av| 欧美色网一区二区| 成人app在线观看| 美女免费视频一区| 亚洲国产成人精品视频| 国产精品久久久久四虎| 精品美女一区二区三区| 欧美日韩国产高清一区二区 | 国产欧美一区二区精品忘忧草| 欧美日韩国产高清一区| av在线不卡网| 国产成人精品免费在线| 免费日本视频一区| 日韩一区精品字幕| 亚洲午夜私人影院| 一区二区三区美女| 亚洲视频一二区| 中文字幕制服丝袜成人av| 久久美女高清视频| 欧美大片在线观看一区二区| 欧美精品在线观看一区二区| 91欧美激情一区二区三区成人| 国产成人av福利| 国产精品一二一区| 国产毛片精品视频| 国产一区二区女| 国产乱码字幕精品高清av| 极品少妇xxxx偷拍精品少妇| 毛片av一区二区| 另类小说图片综合网| 欧美96一区二区免费视频| 日本亚洲视频在线| 免费人成网站在线观看欧美高清| 午夜精品在线看| 日韩成人精品在线| 九九**精品视频免费播放| 麻豆一区二区99久久久久| 麻豆久久久久久| 国产一区二区三区在线观看精品| 激情小说亚洲一区| 国产成人精品亚洲日本在线桃色| 国产成人精品亚洲777人妖| 国产v综合v亚洲欧| 99综合电影在线视频| 91视频在线观看免费| 欧美午夜精品电影| 88在线观看91蜜桃国自产| 日韩一区二区三区三四区视频在线观看| 欧美日韩亚洲综合| 精品黑人一区二区三区久久| 国产日产欧美一区二区视频| 国产精品国产精品国产专区不蜜| 亚洲色图欧洲色图| 亚洲va国产天堂va久久en| 美女性感视频久久| 成人一二三区视频| 欧洲精品在线观看| 91精品国产免费久久综合| 久久久美女毛片| 亚洲三级久久久| 免费的成人av| 成人黄色电影在线| 欧美日韩免费视频| 久久伊人蜜桃av一区二区| 国产精品久线观看视频| 亚洲国产婷婷综合在线精品| 看电影不卡的网站| 91视频91自| 欧美一区二区视频在线观看| 欧美极品aⅴ影院| 亚洲午夜在线视频| 国产一区二区免费看| 日本高清不卡一区| 欧美精品一区二区三区蜜桃视频 | 亚洲精品视频在线看| 美女在线视频一区| 91婷婷韩国欧美一区二区| 日韩精品在线一区| 亚洲裸体在线观看| 激情伊人五月天久久综合| 欧美在线|欧美| 国产视频一区二区三区在线观看| 亚洲动漫第一页| 成人av动漫网站| 精品理论电影在线观看| 亚洲精品国产品国语在线app| 韩国欧美一区二区| 欧美日本在线一区| 综合电影一区二区三区 | 国产成人免费在线观看不卡| 欧美日免费三级在线| 国产精品欧美极品| 黑人精品欧美一区二区蜜桃| 欧美视频一区二| 国产精品久久久一本精品| 国产综合色视频| 91精品国产手机| 亚洲一区在线电影| eeuss鲁一区二区三区| 久久在线观看免费| 精品在线视频一区| 88在线观看91蜜桃国自产| 玉足女爽爽91| 97精品国产97久久久久久久久久久久| 2020国产精品| 精品一区二区三区不卡| 欧美一区二区视频网站| 香蕉加勒比综合久久| 在线观看91精品国产入口| 国产精品理伦片| 国产aⅴ综合色| 国产日产欧产精品推荐色| 国产在线播精品第三| 久久综合狠狠综合久久综合88| 日本成人在线电影网| 欧美二区乱c少妇| 五月婷婷色综合| 6080午夜不卡| 蜜桃久久久久久久| 欧美一区日本一区韩国一区| 秋霞国产午夜精品免费视频| 91精品国产91久久久久久最新毛片 | 粉嫩aⅴ一区二区三区四区| 久久精品在线免费观看| 国产精品综合一区二区三区| 欧美精品一区二区久久婷婷| 国产一区二区久久| 久久久99精品免费观看| 高清不卡在线观看| 国产精品久久一级| 一本一本大道香蕉久在线精品 | 日韩高清欧美激情| 日韩亚洲欧美成人一区| 狠狠网亚洲精品| 国产女同互慰高潮91漫画| 成人综合婷婷国产精品久久免费| 中文欧美字幕免费| 色视频一区二区| 青青草伊人久久| 久久久青草青青国产亚洲免观| 国产成人精品亚洲777人妖| 国产精品国产三级国产有无不卡 | 奇米精品一区二区三区在线观看| 日韩一区二区中文字幕| 久久99国产精品免费网站| 久久精品亚洲精品国产欧美kt∨| 成人性生交大片免费看中文 | 亚洲欧洲精品一区二区三区| 色婷婷久久99综合精品jk白丝 | 国产一区二区毛片| 亚洲同性gay激情无套| 欧美美女一区二区| 国产精品一区二区果冻传媒| 中文字幕佐山爱一区二区免费| 欧美高清你懂得| 国产suv一区二区三区88区| 一区二区三区波多野结衣在线观看| 91精品国产欧美日韩| 99天天综合性| 美女国产一区二区| 1区2区3区国产精品| 日韩欧美在线网站| 一本色道久久综合亚洲91|