如何在数据库中快速插入大量数据

数据库设计如下:
id          主键自增长
username       varchar(50)非空
password        varchar(50)非空
age           int非空

要求插入100W条测试数据。要求username和password都是独一无二的。
age在10~70之间随机。


解决一个问题的方式有很多种:但是每一种都有不同的写法和效率。

第一种写法: 手动插入100W条  大概需要N年
第二种写法: 通过for循环写一个基本的dao插入--->经常性报错
报错1:如下所示: 表示连接太多了,内存不够用
解决方法:用一次关一次,理解为及时回收内存资源。
获取连接失败java.sql.SQLNonTransientConnectionException:
Data source rejected establishment of connection,  message from server:
"Too many connections"

报错2:如下所示:  表示:数据库一次性接受了太多了数据包,不够用了。
如何解决:1.更换电脑   2.修改相关配置文件    3. 使用多线程   4.修改数据库的引擎
5.终极办法:使用批量处理sql语句

获取连接失败com.mysql.cj.jdbc.exceptions.CommunicationsException:
Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago.
 The driver has not received any packets from the server.


 mysql最常见的2大引擎:
 默认:InnoDB  最安全的引擎 可以防止数据出现差错。但是丢失效率
 其中还有一个引擎很常用:常用于测试:MyISAM 效率更高但是没有innoDB安全,不支持事务

测试完成之后切换成InnoDB

executeUpdate表示只能执行一条sql语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值