关于并发数据处理的问题

zhang98722 2011-12-12 03:23:23
很多时候都遇到这样一个问题:

一个程序读数据库然后根据数据进行一些处理
当数据库不是瓶颈的时候
增加处理数据的线程技能提高处理的效率
但是当开始多线程读数据的时候就遇到一个经典的问题:
如何避免读取脏数据...

我先具体描述一个场景嘛:
一个线程需要读一个表的数据然后进行一些操作过后
等待完成时再更新处理过的数据

我知道的处理方式:

数据库的锁:这个很不稳定,如果锁住了程序崩溃了那就很难解锁了,而且据说这样会影响数据库的效率

目前还没有找到其他的解决办法
望各位大牛指点迷津
找了一些资料但都是初略的介绍
没有详细的数据或者实例佐证...
...全文
143 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhang98722 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xustanly 的回复:]

正好建议楼主看一下.net技术大版的置顶贴
传送门
[/Quote]

lock是一种实现方法
但是对于数据安全没有那么高的要求的情况用lock会损失很大的效率的
zhang98722 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ssp2009 的回复:]

表用timestamp字段,加行版本号判断是否被修改过
[/Quote]

我试了下时间戳
发现这个东西是针对整个数据库来进行记录的
和我想要的不是一个东西啊...
而且select一般是没有记录的
zhang98722 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kuqideyupian 的回复:]

这块怎么碰到的基本都是数据库瓶颈..... 对于线程的处理可以用线程锁定时去读取某个表的内容 因为没碰到过 所以我也不知道怎么说....
[/Quote]

当能实现多线程并发不出现问题瓶颈必然是数据库
但是还没安全稳定的实现多线程一般数据库都不是瓶颈...
xuStanly 2011-12-12
  • 打赏
  • 举报
回复
正好建议楼主看一下.net技术大版的置顶贴
传送门
_0筱筱0_ 2011-12-12
  • 打赏
  • 举报
回复
这块怎么碰到的基本都是数据库瓶颈..... 对于线程的处理可以用线程锁定时去读取某个表的内容 因为没碰到过 所以我也不知道怎么说....
快溜 2011-12-12
  • 打赏
  • 举报
回复
表用timestamp字段,加行版本号判断是否被修改过

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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