社区
C#
帖子详情
怎么高效率批量插入1000条数据到数据库
LL891230
2011-04-01 08:57:44
每隔5毫秒就有30多条数据发送过来,然后需要及时插入到数据库,怎样才能更高效插入到数据库?要求:插入到数据库所耗的时间必须要比发送的时间快。目前我的做法是把批量数据先放在DataTable 中,1s后一次性提交DataTable中的数据,用的方法是adapter.Update(DataTable),这种方法效率上还是比较慢,内部实现应该还是一条一条插入的,只不过少连了几次数据库。求各位大虾帮帮忙。
...全文
853
16
打赏
收藏
怎么高效率批量插入1000条数据到数据库
每隔5毫秒就有30多条数据发送过来,然后需要及时插入到数据库,怎样才能更高效插入到数据库?要求:插入到数据库所耗的时间必须要比发送的时间快。目前我的做法是把批量数据先放在DataTable 中,1s后一次性提交DataTable中的数据,用的方法是adapter.Update(DataTable),这种方法效率上还是比较慢,内部实现应该还是一条一条插入的,只不过少连了几次数据库。求各位大虾帮帮忙。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
MongoDB学习手册
大家这么喜欢,我就不要资源分了,改成0分了,我为我一己私利感到抱歉…… MongoDB学习手册 ......................................................................................................................... 1 说明.......................................................................................................................................... 2 一、 Mongodb简介 .......................................................................................................... 4 二、 MongoDB特性 ......................................................................................................... 5 适用场景: ....................................................................................................................... 5 不适用场景: ................................................................................................................... 6 三、 MongoDB的工作方式.............................................................................................. 6 四、 MongoDB的下载 ..................................................................................................... 8 五、 MongoDB的安装 ..................................................................................................... 9 六、 MongoDB
数据
类型................................................................................................ 12 1. Timestamp类型 ...................................................................................................... 12 2. ObjectId类型 .......................................................................................................... 12 3.
数据
库
关联 ............................................................................................................. 14 七、 GridFS文件系统 ..................................................................................................... 15 八、 索引 ......................................................................................................................... 16 九、 主(Master)/从(slave)
数据
库
同步 ................................................................ 20 1. 建立主/从服务器 ................................................................................................... 20 2. 相关参数说明 ......................................................................................................... 21 3. Slave顶替Master ................................................................................................... 22 4. 切换Master/Slave角色 ......................................................................................... 22 5. 更新主服务器位置 ................................................................................................. 22 十、 MongoDB分片和集群............................................................................................ 24 1. 简单分片实例 ......................................................................................................... 24 2. 高级分片实例 ......................................................................................................... 29 十一、
数据
库
基本操作:增查删改 ............................................................................. 37 1. Insert ....................................................................................................................... 37 2. Query ....................................................................................................................... 38 3. Remove.................................................................................................................... 52 4. Update ..................................................................................................................... 53 十二、 Shell控制台 ........................................................................................................ 62 1. 执行.js文件 ............................................................................................................ 62 2. –eval ........................................................................................................................ 62 3. 脚本和互动的区别 ................................................................................................. 62 十三、 安全与认证 ......................................................................................................... 63 1) 开启安全认证 ......................................................................................................... 63 2) 添加用户 ................................................................................................................. 64 3) 认证 ......................................................................................................................... 64
MySQL 批量操作,一次插入多少行
数据
效率最高?
我们在操作大型
数据
表或者日志文件的时候经常会需要写入
数据
到
数据
库
,那么最合适的方案就是
数据
库
的
批量插入
。只是我们在执行批量操作的时候,一次插入多少
数据
才合适呢?假如需要插入的
数据
有百万
条
,那么一次
批量插入
多少
条
的时候,效率会高一些呢?这里博主和大家一起探讨下这个问题,应用环境为
批量插入
数据
到临时表。博主经过测试+谷歌,最终是选用的一次
批量插入
数据
量为max_allowed_packet大小的一半。https。...
MySQL
批量插入
数据
,一次插入多少行
数据
效率最高?
一、前言 我们在操作大型
数据
表或者日志文件的时候经常会需要写入
数据
到
数据
库
,那么最合适的方案就是
数据
库
的
批量插入
。只是我们在执行批量操作的时候,一次插入多少
数据
才合适呢?假如需要插入的
数据
有百万
条
,那么一次
批量插入
多少
条
的时候,效率会高一些呢?这里博主和大家一起探讨下这个问题,应用环境为
批量插入
数据
到临时表。二、
批量插入
前准备 博主本地原本是循环查出来的
数据
,然后每100...
MySQL高级技巧:
批量插入
百万级
数据
量
正确的操作方法不仅能大幅提高
数据
插入效率,还能有效保障
数据
的安全性和完整性。
批量插入
是
数据
库
操作中的常见需求,掌握高效安全的
批量插入
技巧对于
数据
库
管理员和开发者来说至关重要。即每次只插入一定数量的记录,然后提交事务,接着进行下一批的插入。
批量插入
是指在一次
数据
库
操作中,插入多行
数据
的过程。相对于单
条
插入,
批量插入
可以减少
数据
库
事务的次数,提高
数据
处理的效率。在执行
批量插入
操作时,应密切监控系统的CPU、内存以及磁盘IO等资源使用情况,确保操作不会引起系统过载。对于需要插入百万级别
数据
量的情况,推荐使用。
快速
批量插入
数据
到SQL
数据
库
的实践指南
本文还有配套的精品资源,点击获取 简介:为了提高SQL
数据
库
处理大量
数据
时的插入效率,本文探讨了使用SqlBulkCopy类实现极速
数据
插入的方法。通过描述在100万级
数据
测试中达到2秒左右的快速插入,强调了优化大
数据
批量插入
的重要性。文章将解释SqlBulkCopy的工作原理,提供一个C#控制台应用程序示例,并讨论了性能优化的关键点,如
数据
预处理、批处理大小调整、表锁定策...
C#
111,112
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章