【发布时间】:2013-03-03 18:52:49
【问题描述】:
我有一个简单的任务 - 从 SQL 表中读取数据,对其进行处理,并在完成后 - 更新数据库中的一个字段(设置已处理=true),因此每条记录应该只处理一次。
你能告诉我,我可以用什么技术来做多线程?这意味着,在多个线程中从表中读取数据。
【问题讨论】:
-
您可能不需要多个线程。你为什么认为你会这样做?
-
@JohnSaunders 为什么不呢?如果数据不相互依赖(即设置前 N 条记录与后续 N 条记录批次的处理无关),那么这是多线程的理想选择。如果有一个长时间运行的查询,通常将其拆分会减少整体处理时间。
-
@DavidKhaykin:涉及多少磁盘 I/O?你确定数据库不能比你更好地多线程吗?
-
@JohnSaunders - 取决于数据库设计,如果是集群,数据库如何被拆分成文件组等等等等。从简单的意义上来说,可以说数据库(MS SQL 服务器)旨在有效地处理多个并发请求,并且通过多线程(即发送多个请求),您可以利用此功能。如果您从一个表发送一个针对 1,000,000 行的请求,而不是针对每个 100,000 行发送 10 个并发请求,那么您在后者中模拟 10 个客户端同时访问数据库 - 它不会为您执行此操作,因为只有一个查询会拉大记录集。
标签: c# .net sql-server multithreading