mysql 插入10万条数据 优化效率
public int addTypes(List<taobaoBean> babyList) {

    String sql = "insert into type (typeid,url) values (?,?) ";
    Connection conn = dbhelper.getConnection(driver,url,username,upwd);
    int result  = 0;
    PreparedStatement stmt =null;
    try {
        stmt = conn.prepareStatement(sql);
        for(int i=0;i<babyList.size();i++){
            stmt.setInt(1, babyList.get(i).getTypeId());
            stmt.setString(2, babyList.get(i).getUrl());
            stmt.addBatch();
        }
        stmt.executeBatch();
    } catch (Exception e) {
        e.printStackTrace();
    }finally{
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        dbhelper.closeCon(conn);
    }
    return result;
}

1分钟才插入3000条数据,如何变快。
0

3个回答

批处理,,成批的插入

0
csdnzlw
csdnzlw 能在我的例子上修改一下?
3 年多之前 回复

批量插入,不要一条条插入,mysql支持一次插入多条记录

0
csdnzlw
csdnzlw 能给个例子吗?
3 年多之前 回复

有两种方法:
1. 一条SQL语句插入多条数据。
INSERT INTO insert_table (datetime, uid, content, type) VALUES ('0', 'userid_0', 'content_0', 0);

INSERT INTO insert_table (datetime, uid, content, type) VALUES ('1', 'userid_1', 'content_1', 1);
可以将上面这种一条条插入的语句合并成下面这种
INSERT INTO insert_table (datetime, uid, content, type) VALUES('0', 'userid_0', 'content_0', 0), ('1', 'userid_1', 'content_1', 1);

这种方法可以减少SQL语句解析的操作, 只需要解析一次就能进行数据的插入操作,而且SQL语句较短,可以减少网络传输的IO。
2.在事务中进行插入处理
START TRANSACTION;

INSERT INTO insert_table (datetime, uid, content, type) VALUES ('0', 'userid_0', 'content_0', 0);

INSERT INTO insert_table (datetime, uid, content, type) VALUES ('1', 'userid_1', 'content_1', 1);

...

COMMIT;

通过使用事务可以减少数据库执行插入语句时多次“创建事务,提交事务”的消耗,所有插入都在执行后才进行提交操作。

注:两种方法我测了下插入1W条的话,第一种方法和第二种方法之前都要大概11秒,优化以后第一种只要0.2秒,第二种要1秒
LZ也可以两种结合在一起用

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
mysql 一次插入几万条数据应该怎么做优化
对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久。因此,优化数据库插入性能是很有意义的。经过对MySQL InnoDB的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考。 1、insert批量执行,禁止单条insert value(注意单条sql长度限制,可临时...
jdbcTemplate高效批量插入和批量更新 模拟原生jdbc批量10s插入10万条到mysql
1.项目中亲测一次性插入10万条数据差不多用了10s,这时候只能使用原生jdbc,spring框架为我们薄薄的封装了个jdbcTemplate 思路就是准备插入数据库的分隔成1万条(自己根据数据包或网络定具体数量),将sql拼成字符串(减少mysql多次访问的压力,拿连接和mysql日志生成的数量),然后在for循环中插入 使用jdbcTemplate.batchUpdate(sql)即可。 ...
关于mysql上万条数据同时插入时的性能优化
由于项目需要,要求是要单次往数据库里插入10000条数据,刚开始写得代码如下:$code = new Code(); foreach ($codeModel as $v) { $_code = clone $code; $_code-&amp;gt;rid = $rid; $_code-&amp;gt;created_at = time(); $_code-&amp;gt;setAttri...
mysql数据库100万条数据插入采用jdbc的各种方式效率对比。
最近要插入100万左右的数据,还包括计算过程,为了压缩请求时间,特意试了下几种常见的jdbc方式的效率。package test.jbdc; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import org.junit.Test; /** * 大数...
mybatis一次 行插入十万条数据优化问题;
废话不多说直接上代码;mapper文件中: &amp;lt;insert id=&quot;saveList&quot; parameterType=&quot;hashmap&quot; &amp;gt;         INSERT INTO tb_vehicle_tag             (id,VIN,TAG_CODE,TAG_TYPE,STATUS,DESCRIPTION,CREATE_BY,CREATE_DATE,LAST_UPDA...
MySQL批量千万级数据SQL插入性能优化<细读>
对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,可能每天花费在数据导入上的时间就会长达几个小时之久。因此,优化数据库插入性能是很有意义的。        网络上的牛人很多,总会有一些手段可以提高insert效率,大家跟我一起分享一下吧:        1. 一条SQL语句插入多条数据。        我们常用的插入语句大都是一条一个
一次性往mysql中插入10万条数据,只需7秒
不解释,直接上代码$connect_mysql-&amp;gt;autocommit(false); mysqli_query($connect_mysql,'set names utf8'); $begin = time(); $sqls =''; for($i=1;$i&amp;lt;=100000;$i++){ $sqls .= &quot;('......
MySQL使用存储过程插入千万级数据如何提升效率?
-- MySQL测试任务:使用存储过程,往表中插入千万级数据,根据索引优化速度 -- 1.使用索引查询 -- 2.不使用索引查 -- 3.比较两者查询速度的差异 -- 1.创建索引测试表 DROP TABLE IF EXISTS index_test; CREATE TABLE index_test( id BIGINT(20) PRIMARY KEY NOT NULL AU
mysql用时3s插入10万条数据
目标效果 实现向数据库中添加如下数据,inside_code的范围为(00001-99999) 代码 package cn.edu.nwsuaf.cie.sheep.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import jav...
如何插入10万条数据
  create or replace procedure is  begin  for  i  in 1..100000 loop execute  immediate 'insert into t(x)  values ('||i||')'; commit; endloop; end;   create or replace procedure is  begin  fo...
mysql插入数据优化
插入多条数据时,INSERT INTO `tb_name` (field1,field2,field3) values (val1,val2,val3);INSERT INTO `tb_name` (field1,field2,field3) values (val4,val5,val6);用一条语句替换INSERT INTO `tb_name` (field1,field2,field3) va...
php向mysql数据库插入百万级数据的两种方法效率比较
php向mysql数据库中插入百万级数据的两种方法的效率的测试。
关于批量插入数据之我见(100万级别的数据,mysql)
100万数据的插入操作
php插入上万条mysql数据最快的方法
1、使用thinkphp框架 先生成包含所有数据的数组,再使用 addAll() 方法,插入1万条数据仅需3秒钟。   2、PHP原始方法: 将SQL语句进行拼接,使用 insert into table () values  (),(),(),()然后再一次性插入...
php+mysql中迅速插入百万条测试数据的方法(12s)
1.php代码 <?php $t=mktime(); set_time_limit(1000); $myFile="c:/insert.sql"; $fhandler=fopen($myFile,'wb'); if($fhandler){ $i=0; while($i<1000000)//1,0000,000 { $i++; $sql="$i\t'bb'"; fwrite
复杂业务下向Mysql导入30万条数据代码优化的踩坑记录
从毕业到现在第一次接触到超过30万条数据导入MySQL的场景(有点low),就是在顺丰公司接入我司EMM产品时需要将AD中的员工数据导入MySQL中,因此楼主负责的模块connector就派上了用场。在楼主的努力下,线上数据同步代码经历了从最初的将近16个小时(并且还出现其他问题这些问题,等后面慢慢细说),到最终25分钟的性能优化。 打个广告,楼主自己造的轮子,感兴趣的请点https...
php导入大量数据到mysql性能优化技巧
来源:网络整理     时间:2016-6-13 6:32:31     关键词: 本篇文章主要介绍了" php导入大量数据到mysql性能优化技巧",主要涉及到方面的内容,对于PHP教程感兴趣的同学可以参考一下: 本文实例讲述了php导入大量数据到mysql性能优化技巧。分享给大家供大家参考。具体分析如下:在mysql中我们结合php把一些文件导入到mysql中,这里就来...
mysql中关于批量插入数据(1万、10万、100万、1000万、1亿级别的数据)二
硬件:windows7+8G内存+i3-4170处理器+4核CPU 关于前天写的批量插入数据,还有一种方式,就是通过预先写入文本文件,然后通过mysql的load in file命令导入到数据库,今天把这种方式也说一下,首先是main方法调用: 解释一下为什么要两个参数: 第一个参数是写入几次 第二个参数是一次写入多少条,直观来说就是StringBuffer中存储多少条记录(目的为了测试S...
在数据库中插入10万条测试数据
&amp;lt;?php $pdo = new PDO('mysql:host=localhost;dbname=你的数据库名','root','root'); $a = &quot;0000&quot;; for ($k=0; $k &amp;lt;= 9; $k++) {  $arr = array(); for ($i=$k.$a+1; $i &amp;lt;= ($k+1).$a; $i++) {  array_push(...
java读取大文本直接插入Mysql数据库,10万条数据4秒执行完
java读取大文本直接插入数据库: 需求如下:  需要解析的文本文件是从考勤机中导出的1_attlog.dat,dat文件,根据项目需要,我只要2列数据,如下图 第一列在数据库对应的字段为 column3,第二列在数据库对应的字段为column13,测试的sql语句如下: -- ---------------------------- -- Table struc
hibernate批量数据插入优化
Hibernate批量处理: Hibernate批量处理其实从性能上考虑,它是很不可取的,浪费了很大的内存。从它的机制上讲,Hibernate它是先把符合条件的数据查出来,放到内存当中,然后再进行操作。实际使用下来性能非常不理想,在笔者的实际 使用中采用下面的第三种优化方案的数据是:100000条数据插入数据库,主流台式机的配置,需要约30分钟,呵呵,晕倒. 总结下来有三种来处理以解决性能问题: 1:绕过Hibernate API ,直接通过 JDBC API 来做,这个方法性能上是比较好的。也是最快的.
ArrayList关于for循环插入数据,数据量较大优化加快执行效率的方法
public static void main(String[] args) { final int N=10000; Object obj=new Object(); ArrayList list1=new ArrayList(); long start=System.currentTimeMillis(); fo...
mysql数据库效率。100万条数据--500万条数据
一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重。 1 数据库表建立索引默认规则: (1)最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(&gt;、 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果...
mysql插入大量数据,时间的优化。
背景:    业务场景假设,公司原有excel记录了千万级客户的相关数据,公司业务结构实现了信息化的布局,需要在新开发的CRM系统中导入千万级的客户数据。此时需要用到mysql的insert操作来插入用户的海量数据。     普通情况下,会使用for循环一条一条的插入数据。     假设客户的数据量为10条数据。&amp;lt;?php $connect=@mysql_connect(&quot;localhost...
还原真像:ArrayList性能几乎完美,100万数据测试
还原真像:ArrayList性能几乎完美,100万数据测试 程序汪汪 2018-07-17 22:17:21 背景 程序员面试题中经常遇到ArrayList与LinkedList区别,现实的测试情况肯定没多少人清楚。   理论是这样,现实测试情况很打脸啊。 学习目标 搞清楚JDK1.8种ArrayList与LinkedList的性能情况 代码例子 环境准备:java jdk1....
提升mysql大数据插入或者更新数据条目的执行效率
我在做项目的时候有这么个需求,我需要对每天产生的16000条数据进行批量的更新修改, 首先我们先在数据表里面查询新的数据条目是否已经在现有的表里存在,如果存在就执行update方法,如果不存在就直接执行insert方法 我的做法就是 for(循环16000条数据){ String sql = "select * from user where userid=? and uname=? an
MySQL插入千万级记录
场景:     当产品中需要对用户进行过滤的时候,需要对用户添加白名单。如果一次需要导入千万级的用户量,普通的SQL插入/更新耗时长久,执行效率低下。为加快数据库的插入效率,需要对程序和数据库设置进行优化。 1、尽量将数据一次性写入DataFile和减少数据库的checkpoint操作,具体有:     1)将 innodb_flush_log_at_trx_commit 配置设定为0;
MySql Innodb引擎 数据表 上万条数据连续插入优化
innodb_flush_log_at_trx_commit  设置为0 的时候,Log Thread 会在每次事务结束的时候将数据写入事务日志,mysql每秒执行一次,mysql崩溃,则会丢失数据。 设置为1 的时候,Log Thread 会在每次事务结束的时候将数据写入事务日志,并flush写入磁盘。 设置为2 的时候,Log Thread 会在每次事务结束的时候将数据写入事务日
MYSQL在15分钟插入千万条数据
用于数据库插入测试数据,单台测试使用 利用存储过程进行数据插入,数据库未做优化,存储过程可以再优化,将测试条数为一次插入1500条性能最优 一、测试表结构如下: CREATE TABLE `name_info` (   `name` varchar(200) NOT NULL,   `sex` int(4) NOT NULL DEFAULT '0',   PRIMARY KEY (`s
mysql优化存储过程中批量插入的速度
第一次操作,每一条数据执行一次插入操作。 一万条数据花费34s,太慢。 CREATE PROCEDURE insertPro(in sum INT) BEGIN DECLARE count INT DEFAULT 0; DECLARE i INT DEFAULT 0; set count=0; set i = rand() * 10000; while count<sum do inse
Mysql学习总结(35)——Mysql两千万数据优化及迁移
最近有一张2000W条记录的数据表需要优化和迁移。2000W数据对于MySQL来说很尴尬,因为合理的创建索引速度还是挺快的,再怎么优化速度也得不到多大提升。不过这些数据有大量的冗余字段和错误信息,极不方便做统计和分析。所以我需要创建一张新表,把旧表中的数据一条一条取出来优化后放回新表; 一. 清除冗余数据,优化字段结构 2000W数据中,能作为查询条件的字段我们是预知的。所以将这部分数据单
jdbc插入大量数据时优化处理(转)
这个就是做个练习.想看下JDBC的最大优化度.我的要求就是插入到数据库里大量的数据 比如10W 或者 100W 而且要求内存稳定.首先说下我的代码:我的数据库MySQL  CREATE TABLE `users` ( `id` int(11) NOT NULL auto_increment, `firstname` varchar(50) NOT NULL, `lastname` varchar(50) NOT NULL, `age` int(11) NOT NULL, PRI
MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
优化应该不仅仅是数据库方面 使用高性能的服务器 多使用缓存 页面服务器、数据库服务器、图片服务器、上传下载服务器分离 数据库集群,表分割(水平分割和垂直分割)和表散列 负载均衡 重视每个代码开发细节,特别是大循环,多请求和SQL语句复杂的时候 1.代码要干净 2.数据库要分表,可以1个月数据存储一张表: 3.读写分离:写入用一台服务器,然后同步到另外的服务器进行读出。 4.如果...
mysql 更新 10W条记录速度很慢
今天  遇到了个问题    update  table1 t  set t.column1 =0 where t.id in (select id from table2)       就是要更新的数据大概 有10W多条  然后 我执行了下 结果 2个小时了 还是没 执行成功,  后来 问了个 厉害的小伙伴        他把sql 改成了   update table1 t ,table2
Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案
系统中需要批量生成单据数据到数据库表,所以采用批量插入数据库的方式。由于系统中ORM操作集成使用的是Mybatis来完成的。在实际生产中发现,使用Mybatis批量插入调用的效率并不高,于是我们迫切地需要寻找一种处理批量插入性能较高的方式——回归原生数据库JDBC操作。我们要分析Mybatis和JDBC的插入性能,来决策适合我们生产系统的批量插入方式。经过以上测试得出结论:Mybatis的批量适合处理少了数据的批量处理,而JDBC适合大数据量的批量处理。据此,采用JDBC批量+事务处理大数据量的表插入操作是
批量导入10万条记录的办法
1.将10万条记录分成100分,每份1000条记录 2.每次插入1000天记录,sql语句如下:insert table(cloumn1,cloumn2) vlaues('1','2').('2','3')。。。。 3.假如插入的字符中含有如 Don't walk,需要对’号进行转义,改成 Don\'t walk。...
php向MySQL数据库批量添加几十万条数据,很少一部分数据丢失
1.出现高并发现象。 2.php脚本有个默认的执行超时时间  默认为30秒,所以对批量数据处理的时候会停止, 解决方法:可以再第一行代码中添加set_time_limit(0);(永不超时)...
几千万条数据,怎么让查询效率高起来?
大数据量的优化,自己总结了下,在自己的认知范围内,整理了两个大方面 一、sql语句方面的优化 1、使用索引查询         1、造成全表查询的(索引失效的情况):避免null值查询。索引列的数据不要大量重复。where语句中or(union替代)、in not in(between and)、like、!=和  select id from t where num=@num 可
插入大量数据至MongoDB数据库的速度问题分析
插入大量数据至MongoDB数据库的速度问题分析 需求背景:某定时任务产生千条或更多JSON数据,本次数据还未完全写入数据库中,下一次定时任务的数据已经产生,由此而产生的数据拥堵怎么解决? 最初使用SpringBoot对MongoDB数据库做数据插入操作时,使用的是MongoTemplate中的save方法完成数据存储操作。 具体代码实现如下: JS
MySQL在插入90万条数据消耗的时间以及查询90万条数据时的性能优化
我的MySQL版本是5-1-39。 查看MySQL版本: mysql> select version();   +-------------+   | version()   |   +-------------+   | 3.23.56-log |
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链优化 新大区块链课程10