SqlServer每秒同时入库成千上万条数据

冬雨在路上 2013-04-11 05:43:49
加精
大家好,我现在有个程序有1000个以上客户端发送数据过来,数据发送频率为每秒2次以上,我程序收到后处理 再入库。这样每秒就入库2000多次,速度就慢了,入库成了一个瓶颈。大家有什么好的解决方法 ?使用SQL池?
...全文
11536 126 打赏 收藏 转发到动态 举报
写回复
用AI写文章
126 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yuchi608 2014-02-25
  • 打赏
  • 举报
回复
这么大的数据,现在我还handle不了啊
lihuaren 2014-02-08
  • 打赏
  • 举报
回复
没看明白啥意思
jiangjgong 2013-04-20
  • 打赏
  • 举报
回复
路过看高手!
冬雨在路上 2013-04-19
  • 打赏
  • 举报
回复
这样操作 sqlserver 的日志文件变得很大,测试了一下 ,日志文件比数据库都大
englishyys2012 2013-04-18
  • 打赏
  • 举报
回复
这个数据量也太大了。。。
Aries_0219 2013-04-18
  • 打赏
  • 举报
回复
过来学习下
a82344626 2013-04-18
  • 打赏
  • 举报
回复
引用 115 楼 junzh0536 的回复:
引用 113 楼 englishyys2012 的回复: 这个数据量也太大了。。。 实际用于也需没那么大,但是软件检测所就是要求这样的
实际没这么大就不用这样检测了~ 到时有这么大再说
a82344626 2013-04-18
  • 打赏
  • 举报
回复
不知道 你有没有听过BI这个职业~ 我这里上亿的数据同步都才是1分种左右1秒查询的数据是多快插入数据库的数据就是多快 informatica powercenter 有没有听过? 就是这用个软件
冬雨在路上 2013-04-18
  • 打赏
  • 举报
回复
引用 113 楼 englishyys2012 的回复:
这个数据量也太大了。。。
实际用于也需没那么大,但是软件检测所就是要求这样的
xyzhuzhou 2013-04-18
  • 打赏
  • 举报
回复
u010144515 2013-04-18
  • 打赏
  • 举报
回复
牛X的提问。。。。应该有处理的办法,路过,因为很多服务器都是做这样大数据的处理的。。。
name506 2013-04-18
  • 打赏
  • 举报
回复
过来学习下 硬盘会不会坏的比较快
卧_槽 2013-04-18
  • 打赏
  • 举报
回复
引用 80 楼 junzh0536 的回复:
引用 75 楼 lc2470348636 的回复:看了上面你说的,感觉你实现的时候应该是利用数据库访问类调用存储过程,然后利用循环逐条插入。如果是这样的话,很明显,效率并不是很高啊。 以前我记得看过一些关于这个问题的,插入时用sqlbulkcopy看行不行,这个效率很高啊,或者xmlbulkcopy。或者使用表值参数,把一个表类型作为参数传递到函数或者存储过程里,少于1……
先用xmlbulkcopy全部插入缓存表,插完在做判断和处理。 你的瓶颈发生在插入的时候,如果数据已经存在了,再做查询和更新,每次几万条数据sqlserver没感觉。
冬雨在路上 2013-04-17
  • 打赏
  • 举报
回复
引用 106 楼 lc2470348636 的回复:
引用 104 楼 junzh0536 的回复:引用 103 楼 lc2470348636 的回复:引用 102 楼 junzh0536 的回复:引用 86 楼 lc2470348636 的回复:引用 80 楼 junzh0536 的回复:引用 75 楼 lc2470348636 的回复: 效率来考虑的话,不是很高。效率的瓶颈在于你从数据源表select的数据的效率。关于……
要update or insert操作的的表B,里面要确保每个ID只有一条记录,如果要insert into b selest * from a where... 这样的话每次只有insert,难道Insert前先delete?
sunylf 2013-04-17
  • 打赏
  • 举报
回复
同意107的說法,觸發器的效率應該很高的。
裸奔在上海 2013-04-17
  • 打赏
  • 举报
回复
你这个最先出现瓶颈的地方应该是存储方面的IO,先把这个问题处理掉。
ravb2 2013-04-17
  • 打赏
  • 举报
回复
我想先要确定瓶颈位置. 系统原因.I/O 是由于磁盘性能,还是因为内存不足要经常checkpoint. 表设计原因:不知你AB表是不是使用自增列为主键.这样会影响插入性能. 如果是,建议更改主键或表分区 程序原因:可能.客户端提交一组数据.服务端开启事务.一条数据提交一次服务器,并最终commit,可能再未commit之前,交互的时间阻塞其它进程
MicroLic 2013-04-16
  • 打赏
  • 举报
回复
引用 102 楼 junzh0536 的回复:
引用 86 楼 lc2470348636 的回复:引用 80 楼 junzh0536 的回复:引用 75 楼 lc2470348636 的回复: 如果是这样的话,我想着可以直接使用sqlbulkcopy,这样对于a表应该是没有问题,要是b表的话,可不可以直接从a表中进行判断然后插入到b表中,用 insert into B select * form A wher……
效率来考虑的话,不是很高。效率的瓶颈在于你从数据源表select的数据的效率。关于同步的话,可以用完全更新来做,像我上面所说的,那个仅仅是一个插入而已,但是对于A表已经删除的操作是无法捕捉的,所以可以用完全更新,这样,比较慢,但是一分钟100W应该还是绰绰有余的。还有一种方法就是使用触发器,可以写三个触发器,数据同步增加、数据同步删除、数据同步更新,这样创建触发器使得A表有所动作的时候B表也会做相应操作。 个人意见,楼主考虑下...
冬雨在路上 2013-04-16
  • 打赏
  • 举报
回复
引用 86 楼 lc2470348636 的回复:
引用 80 楼 junzh0536 的回复:引用 75 楼 lc2470348636 的回复: 如果是这样的话,我想着可以直接使用sqlbulkcopy,这样对于a表应该是没有问题,要是b表的话,可不可以直接从a表中进行判断然后插入到b表中,用 insert into B select * form A where ... 这样来同步一下B表中的内容。像你所说的,A中的表内容应该是完全包含B中的内容吧,所以这样虽然牺牲了性能要求,但是应该是可以的吧,楼主认为?
这样也是一种方法,先操作A表,再同步B表,A中的表内容是完全包含B中的内容的,B表每个对应ID的最新记录,A表是每个对应ID的全部记录。。同步B表时效率不高吧
冬雨在路上 2013-04-16
  • 打赏
  • 举报
回复
引用 74 楼 blukercn 的回复:
办法很多。。
分享几个思路,来学习一下啊
加载更多回复(89)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧