社区
C#
帖子详情
怎么高效率批量插入1000条数据到数据库
LL891230
2011-04-01 08:57:44
每隔5毫秒就有30多条数据发送过来,然后需要及时插入到数据库,怎样才能更高效插入到数据库?要求:插入到数据库所耗的时间必须要比发送的时间快。目前我的做法是把批量数据先放在DataTable 中,1s后一次性提交DataTable中的数据,用的方法是adapter.Update(DataTable),这种方法效率上还是比较慢,内部实现应该还是一条一条插入的,只不过少连了几次数据库。求各位大虾帮帮忙。
...全文
823
16
打赏
收藏
怎么高效率批量插入1000条数据到数据库
每隔5毫秒就有30多条数据发送过来,然后需要及时插入到数据库,怎样才能更高效插入到数据库?要求:插入到数据库所耗的时间必须要比发送的时间快。目前我的做法是把批量数据先放在DataTable 中,1s后一次性提交DataTable中的数据,用的方法是adapter.Update(DataTable),这种方法效率上还是比较慢,内部实现应该还是一条一条插入的,只不过少连了几次数据库。求各位大虾帮帮忙。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xsi640
2011-04-01
打赏
举报
回复
http://www.dotnetdev.cn/2011/04/%e4%bd%bf%e7%94%a8sqlbulkcopy%e6%8f%90%e9%ab%98%e6%89%b9%e9%87%8f%e6%8f%92%e5%85%a5%e6%95%b0%e6%8d%ae%e5%ba%93%e6%80%a7%e8%83%bd/
sqlbulkcopy加多数据库服务器处理
JimsdogV1
2011-04-01
打赏
举报
回复
[Quote=引用 13 楼 ll891230 的回复:]
引用 12 楼 ll891230 的回复:
引用 10 楼 qqiuzaihui 的回复:
提供一个思路供参考:
使用数据缓冲区+多线程完成这个功能, 先用队列作为数据缓冲区, 一个线程专门负责读取数据, 将读取到的数据保存到队列; 另一个线程专门负责保存数据, DbConnection不能用sqlbulkcopy, 在Insert语句中使用 Union 拼接总是可以的吧, 一次性地拼接30……
[/Quote]
缓冲只是为了解决偶然的密集数据,要是数据一直都很密集,加不加缓冲又有什么区别呢。
JimsdogV1
2011-04-01
打赏
举报
回复
5毫秒??还多线程?。。。
线程多效率就更低了。
还是考虑内存数据库吧 fastdb之类的
LL891230
2011-04-01
打赏
举报
回复
[Quote=引用 12 楼 ll891230 的回复:]
引用 10 楼 qqiuzaihui 的回复:
提供一个思路供参考:
使用数据缓冲区+多线程完成这个功能, 先用队列作为数据缓冲区, 一个线程专门负责读取数据, 将读取到的数据保存到队列; 另一个线程专门负责保存数据, DbConnection不能用sqlbulkcopy, 在Insert语句中使用 Union 拼接总是可以的吧, 一次性地拼接30条数据保存到数据库中. 我有试过用此种方法接收……
[/Quote]目前我的做法也是用一个列队存储数据,一个线程存,一个线程取,取的过程中需要分析+发送+插入,所耗时间远远不能达到那边传数据速度,所以就会产生数据堆积,然后越堆越多...
LL891230
2011-04-01
打赏
举报
回复
[Quote=引用 10 楼 qqiuzaihui 的回复:]
提供一个思路供参考:
使用数据缓冲区+多线程完成这个功能, 先用队列作为数据缓冲区, 一个线程专门负责读取数据, 将读取到的数据保存到队列; 另一个线程专门负责保存数据, DbConnection不能用sqlbulkcopy, 在Insert语句中使用 Union 拼接总是可以的吧, 一次性地拼接30条数据保存到数据库中. 我有试过用此种方法接收处理1万条记录, 基本上可以确保即时地将数据保存到……
[/Quote]我试试,谢谢!
wqzone
2011-04-01
打赏
举报
回复
不要忘记了约束“插入到数据库所耗的时间必须要比发送的时间快”。
qqiuzaihui
2011-04-01
打赏
举报
回复
提供一个思路供参考:
使用数据缓冲区+多线程完成这个功能, 先用队列作为数据缓冲区, 一个线程专门负责读取数据, 将读取到的数据保存到队列; 另一个线程专门负责保存数据, DbConnection不能用sqlbulkcopy, 在Insert语句中使用 Union 拼接总是可以的吧, 一次性地拼接30条数据保存到数据库中. 我有试过用此种方法接收处理1万条记录, 基本上可以确保即时地将数据保存到数据库中.
当然, 如果接收到的数据量足够大足够快, 那可能还得考虑一下 sp1234 提到的 内存数据库 的问题。
wqzone
2011-04-01
打赏
举报
回复
我看还是换思路吧,
神仙也不敢保证“插入到数据库所耗的时间必须要比发送的时间快”。只要是与系统边界联系的总有意外发生。
所以建议另开途径
zhuoyue9935
2011-04-01
打赏
举报
回复
数据量太大。多几个数据库。每隔几秒插入到不同的数据里。空余的时间汇总。
trilcc
2011-04-01
打赏
举报
回复
或者写个存储过程
以专业开发人员为伍
2011-04-01
打赏
举报
回复
先不用担心你使用什么方式来保存数据,先担心程序的质量吧。你能否保证准确性?如果不能,最好请别人来完成这个任务。
以专业开发人员为伍
2011-04-01
打赏
举报
回复
[Quote=引用楼主 ll891230 的回复:]
每隔5毫秒就有30多条数据发送过来,然后需要及时插入到数据库,怎样才能更高效插入到数据库?
[/Quote]
这不太可能。
如果一定要使用数据库,那么应该花十几万去买一个世界上最好的
内存数据库
(并且可以确保自动保存到磁盘的)。
要想用技术方式解决,首先应该忘掉常见的关系数据库。商用关系数据库花上百倍的代价去做其它工作,而你的任务则没有时间做通常的数据库系统所必须做的事情(比如ACID的事务处理),所以你的任务根本不应该从现在常见的商用关系数据库角度来考虑。
ccsldya
2011-04-01
打赏
举报
回复
其实这样就好了啊 ,你可以把1s延迟到5秒?
语句一条条执行的时间很少,浪费时间的地方在不断的链接和断开数据库
想提高效率就像这样放在一起就行了啊。。
坐等高手
天罡gg
2011-04-01
打赏
举报
回复
楼上正确
使用sqlbulkcopy
LL891230
2011-04-01
打赏
举报
回复
[Quote=引用 1 楼 shiyuyao1987 的回复:]
使用sqlbulkcopy
[/Quote]我现在使用的是DbConnection,不是用的SqlConnection,我该怎么做?
shiyuyao1987
2011-04-01
打赏
举报
回复
使用sqlbulkcopy
MySQL 批量操作,一次插入多少行
数据
效率最高?
我们在操作大型
数据
表或者日志文件的时候经常会需要写入
数据
到
数据
库
,那么最合适的方案就是
数据
库
的
批量插入
。只是我们在执行批量操作的时候,一次插入多少
数据
才合适呢?假如需要插入的
数据
有百万
条
,那么一次
批量插入
多少
条
的时候,效率会高一些呢?这里博主和大家一起探讨下这个问题,应用环境为
批量插入
数据
到临时表。博主经过测试+谷歌,最终是选用的一次
批量插入
数据
量为max_allowed_packet大小的一半。https。...
mysql
批量插入
数据
,一次插入多少行
数据
效率最高?
文章目录一、前言二、
批量插入
前准备1、插入到
数据
表的字段2、计算一行字段占用的空间3、在
数据
里做插入操作的时候,整体时间的分配三、
批量插入
数据
测试1、SQL语句的大小限制2、查看服务器上的参数:3、计算一次能插入的最大行记录4、测试插入
数据
比对(1)插入11W
条
数据
,按照每次10,600,
1000
,20000,80000来测试:(2)加大
数据
量到24w(3)加大测试量到42W5、如果插入的值就是s...
SpringBoot
批量插入
数据
到
数据
库
JdbcTemplate、MyBatis、JPA
在 Spring Boot 中,我们可以使用 JdbcTemplate、MyBatis 和 Spring Data JPA 等多种方式来
批量插入
数据
到
数据
库
。这些方式各有优缺点,开发者可以根据实际情况选择最适合自己的方式。
MySQL
批量插入
数据
,一次插入多少行
数据
效率最高?
一、前言 我们在操作大型
数据
表或者日志文件的时候经常会需要写入
数据
到
数据
库
,那么最合适的方案就是
数据
库
的
批量插入
。只是我们在执行批量操作的时候,一次插入多少
数据
才合适呢?假如需要插入的
数据
有百万
条
,那么一次
批量插入
多少
条
的时候,效率会高一些呢?这里博主和大家一起探讨下这个问题,应用环境为
批量插入
数据
到临时表。 二、
批量插入
前准备 博主本地原本是循环查出来的
数据
,然后每
1000
条
插入一次,直至完成插入操作。但是为什么要设置
1000
条
呢,实不相瞒,这是因为项目里的其他
批量插入
都是一次插
1000
条
。。汗,博
【JDBC】-- Java向
数据
库
批量插入
数据
操作
在Java项目中可能会出现大量向
数据
库
中插入的情况,下面有四种方式实现
批量插入
,四种方式效率由低到高、循序渐进。下面使用idea+Mysql8。
C#
110,539
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章