mysql插入多条数据 本帖最后由 jsyzgygcj 于 2010-12-28 10:33:41 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 数据写入TXT中,用LOAD DATA INFILE导入 楼上的方法我也看过,也是需要IO操作,如果数据量只有100条,新建个txt感觉也么必要 用INSERT DELAYED ... 插入行被排入队列,当表没有被其它线程使用时,此行被插入。使用INSERT DELAYED的另一个重要的好处是,来自许多客户端的插入被集中在一起,并被编写入一个块。这比执行许多独立的插入要快很多。 如果是innodb存储引擎set autocommit = 0 程序里面这样写( insert into C(NAME) values ('name1'),('name2'),('name3'),('name4'),('name5');) 为了提高插入数据的效率,我们可以利用MySql的批量插入数据能力。其实,从本质来说也就是取消JDBC中事务的自动提交,改为手动提交。 如果没有关闭JDBC事务的自动提交,那么JDBC驱动会在每次执行了一条SQL语句之后,自动提交,并且关闭连接。而我们知道打开数据库连接是非常耗资源的,而且有些JDBC框架还会限制数据库操作的频率。这种情况下,如果采用单调数据插入效果非常不好。 解决的方法之一,就是关闭JDBC事务的自动提交,改为手动提交。我们可以记录SQL语句的执行次数,然后当达到某一个值的时候,比如10w次的时候,手动提交一下事务,然后关闭并重新开始数据库连接。再进行下一批数据局的插入或者更新。 insert into C(NAME) values('abc'), ('abc1'), ,,,,可以一条insert语句,插入多条记录。 insert into 表名s (a,b,c)selct d,e,f from 表名a 纠正楼主一些问题:1. 你说的第二种方法比第一种方法并不会减少打开和关闭数据库连接的时间。第一种方法完全是可以在一个数据库连接里面来实现的。2. 如果有100条数据的话,那么这100条数据的内容是无论如何都要传到数据库里面的,这部分时间节省不了,同样的,写到硬盘的时间也节省不了3. 完整的数据库操作流程主要流程包括:建立连接,数据传输,sql优化,数据写入,事务提交,断开连接。所以实际上你这种情况可以优化的地方不外乎数据传输,sql优化,事务提交这三部分4. 数据传输最简单的办法就是把程序服务器和数据库服务器放在一个机器上面,至于千方百计的缩短sql大抵不必,因为本身这个环节如果排除网络因素的话,占的时间很少5. sql优化部分,就是说自己先把sql优化了,省得服务器再做一次。这个对于select语句作用比较大。像楼主这种问题最简单的就是使用mysql的prepared statement,具体自己查文档了6. 事务部分,一个是放在同一个事务里面来处理,另外一个是确认这个表到底是否需要使用事务,如果不需要的话就不要用innodb,这样会快很多 难道我刚开始就错错错了??高分求助 求将一个图象文件导入到POSTGRESQL中的BYTEA字段的代码 MYSQL里数据表类型怎么转换? 2W人同时在线的并且一个表的数据达到100W行的数据,用Postgresql行不行?或者其它的? mysql server出现的怪问题 MySQL如何实现镜像,如果可以的话。 怎么在2000下安装mysql SQL求助啊! MYSQL substring 和 in 如何联合使用? 自增列想设成001、002、003->999 这种形式 100万的并发数,mysql数据库,并且是一台服务器,面试时候遇到的问题 主从同步的问题
set autocommit = 0
如果没有关闭JDBC事务的自动提交,那么JDBC驱动会在每次执行了一条SQL语句之后,自动提交,并且关闭连接。而我们知道打开数据库连接是非常耗资源的,而且有些JDBC框架还会限制数据库操作的频率。这种情况下,如果采用单调数据插入效果非常不好。
解决的方法之一,就是关闭JDBC事务的自动提交,改为手动提交。我们可以记录SQL语句的执行次数,然后当达到某一个值的时候,比如10w次的时候,手动提交一下事务,然后关闭并重新开始数据库连接。再进行下一批数据局的插入或者更新。
可以一条insert语句,插入多条记录。
1. 你说的第二种方法比第一种方法并不会减少打开和关闭数据库连接的时间。第一种方法完全是可以在一个数据库连接里面来实现的。
2. 如果有100条数据的话,那么这100条数据的内容是无论如何都要传到数据库里面的,这部分时间节省不了,同样的,写到硬盘的时间也节省不了
3. 完整的数据库操作流程主要流程包括:建立连接,数据传输,sql优化,数据写入,事务提交,断开连接。所以实际上你这种情况可以优化的地方不外乎数据传输,sql优化,事务提交这三部分
4. 数据传输最简单的办法就是把程序服务器和数据库服务器放在一个机器上面,至于千方百计的缩短sql大抵不必,因为本身这个环节如果排除网络因素的话,占的时间很少
5. sql优化部分,就是说自己先把sql优化了,省得服务器再做一次。这个对于select语句作用比较大。像楼主这种问题最简单的就是使用mysql的prepared statement,具体自己查文档了
6. 事务部分,一个是放在同一个事务里面来处理,另外一个是确认这个表到底是否需要使用事务,如果不需要的话就不要用innodb,这样会快很多