多个线程访问SQL数据库

时间:2014-03-19 19:03:24

标签: c# sql multithreading thread-safety

我有一个服务器和'x'个客户端。

当服务器正在侦听入站连接时,它将创建一个客户端处理程序实例(管理客户端通信的类),该实例将在单独的线程中分离出来。

根据客户端发送到服务器的命令,服务器可能需要访问SQL数据库以存储有关该客户端的信息。

客户端处理程序实例将“处理”此请求。唯一的问题是,如果多个客户端处理程序想要访问SQL数据库以执行完全相同的操作,则可能存在读/写问题。

我在考虑在服务器上公开静态方法,从客户端句柄实例调用它,然后锁定访问SQL数据库的函数(读取或写入)。

这是一种好方法还是有更好的方法?

感谢。

1 个答案:

答案 0 :(得分:4)

嗯,你知道SQL有锁和大量内部机制来序列化访问吗?这是自20世纪50年代创建SQL以来SQL中根深蒂固的ACID条件的一部分? SQL中的锁定机制非常精细,基本上你试图解决60多年前已经解决的问题....因为看起来你需要阅读一本关于SQL基础知识的书。

在正常情况下(标准连接字符串)资源访问在SQL Server(TransactionIsolationLevel序列化)中被序列化,但可以进行调整。我真的建议学习一些SQL基础知识。