怎么做到延迟存储信息到数据库
时间:2011-12-17
来源:互联网
当一种操作对数据库操作时间可能过长,例如要用事务写数十个表的数据,让用户长时间等待不好,先验证后给用户一个操作成功的消息,然后把插入操作存入一个执行队列中,延迟存储。
.net是否有这样的解决方案?msmq可否?
.net是否有这样的解决方案?msmq可否?
作者: popo0027 发布时间: 2011-12-17
可以放到一个后台线程,线程定时将数据存入到数据库中,例如timer,该线程对应用程序提供接口,应用程序只负责往线程里写东西,剩余的时候由线程来操作。
作者: fwyong 发布时间: 2011-12-17
消息队列是需要排队等待的,这种情况下用消息队列,性能上不太好。同上,后台开线程是可以的。可以考虑使用Backgroundworker
作者: ZeroKiseki 发布时间: 2011-12-17
Backgroundworker worker =new Backgroundworker();
worker.DoWork+=new DoWorkEventHandler((sender,e)=>
{
//ToDo
//比如说提示前台用户:当前数据正在加载中....
//事务插入数据
});
worker.ProgressChanged+= new ProgressChangedEventHandler((sender,e)=>
{
//ToDo
});
worker.RunWorkerCompleted+=new RunWorkerCompletedEventHandler((sender,e)=>
{
//数据已加载完毕
});
实际上Backgroundworker完全可以解决你得问题。
worker.DoWork+=new DoWorkEventHandler((sender,e)=>
{
//ToDo
//比如说提示前台用户:当前数据正在加载中....
//事务插入数据
});
worker.ProgressChanged+= new ProgressChangedEventHandler((sender,e)=>
{
//ToDo
});
worker.RunWorkerCompleted+=new RunWorkerCompletedEventHandler((sender,e)=>
{
//数据已加载完毕
});
实际上Backgroundworker完全可以解决你得问题。
作者: ZeroKiseki 发布时间: 2011-12-17
用个定时器过一阵子再执行存储?
作者: pitsou7 发布时间: 2011-12-17
引用 2 楼 zerokiseki 的回复:
消息队列是需要排队等待的,这种情况下用消息队列,性能上不太好。同上,后台开线程是可以的。可以考虑使用Backgroundworker
消息队列是需要排队等待的,这种情况下用消息队列,性能上不太好。同上,后台开线程是可以的。可以考虑使用Backgroundworker
非常感谢,BackgroundWorker还没用过,去学习看看。
有一点,当开始对数据库开始操作的时候,提示给用户的是:您操作已成功,其实可能还得1分钟(可能数据被其他线程上锁,也可能正在插入数据,量很大)才能完全把数据插入完毕,如果这时候正好宕机,msmq在server重启后还能继续执行插入。这个优势不好取代。
但是ms队列方式执行sql,是不是必须等到队列中上一个sql执行完毕才能执行下一个sql,而不管是否表是否上锁,从而降低了数据库并发执行的效率?
作者: popo0027 发布时间: 2011-12-17
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28