怎么在MySql中插入千万级大数据
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,今天就跟大家聊聊有关怎么在MySql中插入千万级大数据,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。第一步,读取文件,开始插入多线程在这里,达
千家信息网最后更新 2026年11月02日怎么在MySql中插入千万级大数据
今天就跟大家聊聊有关怎么在MySql中插入千万级大数据,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
第一步,读取文件,开始插入多线程
在这里,达到一定量的量是个需要斟酌的问题,在我的实验中,开始使用100w作为这个量,但是出现了新的问题,Java 堆内存溢出,最终采用了10W作为量的标准。
当然,可以有其他的量,看大家自己喜欢那个了。
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 ArrayList 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 ArrayList(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 ArrayList(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(); } } 第二步,使用多线程,批量插入数据
class MultiThread implements Runnable { private ArrayList list; public MultiThread(ArrayList 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(List list) { // for (String str : list) { // System.out.println(str); // } System.out.print(Thread.currentThread().getName() + " :"); System.out.println(list.size()); } } 批量操作中,使用mysql的prepareStatement类,当然也使用了statement类的批量操作,性能比不上前者。前者可以达到1w+每秒的插入速度,后者只有2000+;
public int insertUserBehaviour(ArrayListsqls) 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; }
看完上述内容,你们对怎么在MySql中插入千万级大数据有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
数据
内容
线程
文件
问题
一定量
内存
只有
性能
更多
标准
比不上
知识
篇文章
行业
资讯
资讯频道
速度
频道
进一
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
耶加雪菲
江苏根荣互联网科技
科技创新与互联网经济
互联网科技金融
科技服务与互联网
互联网女皇 腾讯科技
唐信互联网科技 大连
郑州华宇互联网科技
亿人帮互联网科技
互联网科技英文翻译
成都玖崟互联网科技有限公司乐商圈怎么样
承德科技产业互联网发展
阿大互联网科技有限公司
洛阳共同富裕互联网科技有限公司
上海钢联属于互联网科技股吗
城市宝互联网科技有限公司
互联网科技股为什么大涨
第三届互联网大会安防黑科技
网互联网络科技
株洲百竞科技的互联网营销顾问
国智互联网科技
互联网金融 科技金融
万易互联网科技有限公司
壕鑫互联网络科技
中正互联网科技招聘
华中科技有哪些互联网大佬
西藏七维空间互联网科技有限公司
互联网科技公司有风险吗
民营互联网公司国防科技
科技互联网公司两年变化