mysql5资源共享

 找回密码
 立即注册
查看: 100|回复: 10

[MS-SQL Server] 【应用】插入有间隔如果用事务

[复制链接]

4

主题

19

帖子

52

积分

注册会员

Rank: 2

积分
52
发表于 2019-7-12 18:54:08 | 显示全部楼层 |阅读模式
大家好,我对数据库不太熟练,现在想请教大家一个问题。有一个项目,在持续不停的接收数据,但是接收的数据是有间隙的,比如500毫秒、50毫秒或者更短。总之有间隔,但是一直在接收,而且每一条的数据量还比较大(可能是几M),我需要把接收的数据存入数据库。为了能达到比较高的性能,应该用事务的方式,多条数据一次性的插入,而不是一条一条的插入。但是我有个疑问,每条数据之间有间隔,能用事务吗,要怎么用呢?等多久来一次统一的插入呢。并且,如果有错的话,那我前面收的数据,还没来得及插入的,也报销了,怎么能减小损失呢。我不想因为一条数据的失败让前面已收到的数据都没保存。这个要如何解决呢。我对数据库经验挺少,还希望大家多多发言,多多帮忙,谢谢了!还希望有经验的朋友能用代码示例一下,我是用VC2015开发的。
回复

使用道具 举报

36

主题

2968

帖子

6024

积分

论坛元老

Rank: 8Rank: 8

积分
6024
发表于 2019-7-12 19:06:02 | 显示全部楼层
有间隙的两个语句,不能使用事务
回复

使用道具 举报

4

主题

19

帖子

52

积分

注册会员

Rank: 2

积分
52
 楼主| 发表于 2019-7-12 19:35:06 | 显示全部楼层
那我如何能提高插入的效率呢,难道就一条一条插?那是不是太慢了

引用1楼卖水果的net的回复:有间隙的两个语句,不能使用事务
回复

使用道具 举报

36

主题

2968

帖子

6024

积分

论坛元老

Rank: 8Rank: 8

积分
6024
发表于 2019-7-12 19:39:16 | 显示全部楼层
楼主研究一下消息队列。

数据来了,先存到消息队列,每隔几分钟,统一写一次。
回复

使用道具 举报

4

主题

19

帖子

52

积分

注册会员

Rank: 2

积分
52
 楼主| 发表于 2019-7-13 14:53:50 | 显示全部楼层
引用3楼卖水果的net的回复:楼主研究一下消息队列。

数据来了,先存到消息队列,每隔几分钟,统一写一次。

只有这一种办法吗,还有别的办法吗,有没有其它能提高效率的办法啊,谢谢。
回复

使用道具 举报

37

主题

1740

帖子

3557

积分

论坛元老

Rank: 8Rank: 8

积分
3557
发表于 2019-7-13 17:49:12 | 显示全部楼层
你弄的是啥数据这么大?一条数据都几MB的……
回复

使用道具 举报

37

主题

1740

帖子

3557

积分

论坛元老

Rank: 8Rank: 8

积分
3557
发表于 2019-7-13 18:28:02 | 显示全部楼层
1.如果与钱无关,数据库的恢复模式设置为简单;

3220.png

3220.png



2.数据表尽量去掉多余的索引;

3.使用sqlbulkcopy,写法可以参考:https://blog.csdn.net/yenange/article/details/78550982

4.#3版主的做法是有效的,建议1分钟插入一次数据,这样数据库压力不至于太大,而且效率很高。
回复

使用道具 举报

4

主题

452

帖子

940

积分

高级会员

Rank: 4

积分
940
发表于 2019-7-13 21:53:19 | 显示全部楼层
每次插入的量也要控制
回复

使用道具 举报

4

主题

19

帖子

52

积分

注册会员

Rank: 2

积分
52
 楼主| 发表于 2019-7-16 09:24:05 | 显示全部楼层
引用6楼吉普赛的歌的回复:1.如果与钱无关,数据库的恢复模式设置为简单;




2.数据表尽量去掉多余的索引;

3.使用sqlbulkcopy,写法可以参考:https://blog.csdn.net/yenange/article/details/78550982

4.#3版主的做法是有效的,建议1分钟插入一次数据,这样数据库压力不至于太大,而且效率很高。

你好,这位朋友。非常感谢你的回答,首先我想表示谢谢。我做的是数据仿真,有大量测试数据,比如波形什么的,不是金钱方面的,但是数据量比较大。

1.你说的把数据库的恢复模式设置为“简单”,设置为“简单”是有什么作用呢,能解释一下吗。另外,你的这个设置是对哪一种数据库的呢,还是说所有的数据库都有这一项?数据库千差万别,可能也不是所有的都有这个设置的吧。

2.你说的“sqlbulkcopy”方法,是一个库还是什么。它可以解决我的需要是吗。

你说的方法和3#说的方法一样吗,还是说另一种方式。你能把你的方法再说得详细点吗,具体怎么做啊,我对数据库经验较少,还请你多指点,谢谢。
回复

使用道具 举报

4

主题

19

帖子

52

积分

注册会员

Rank: 2

积分
52
 楼主| 发表于 2019-7-16 09:25:08 | 显示全部楼层
引用7楼砸死牛顿的苹果的回复:每次插入的量也要控制

插入的量要控制在多少,控制在多少比较好,或者你说的是针对哪种数据库,你能具体说说吗,谢谢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|mysql5.com Inc. ( 闽ICP备17002856号-1 )

GMT+8, 2019-10-23 01:19 , Processed in 0.047828 second(s), 21 queries .

Powered by MySQL5.com X3.4

© 2003-2019 MySQL5.com.

快速回复 返回顶部 返回列表