讨论:如何安全的处理数据库发问题。问题非常棘手,希望对MS SQL并发处理有独到见解的高手参加!
问题背景:最近在开发一个项目,由于该项目所设计的软件使用人在同一时刻会超过50人以上,也就是说会有同一时刻有50个人在对某一张表做插入操作。通过用暴力测试(测试内容:事物处理之插入操作,每台客户端各连续不停的添加20000条记录,共有20台机器参与测试。测试工具采用自己写的自动测试机),很不幸的发现,第一台机器会以独占方式工作,后面的机器可以获得请求,但是结果是MS SQL服务器假死机了。等到所有20台机器都完成了,服务器又活了。
测试代码基本结构:
测试语句例如 Insert into a(col1,col2)value(var1,var2);
for (int i=0; i < 20000;i++)
{
数据库连接请求
事物处理语句块
完成后,关闭数据库连接
}
不知道为什么程序会独占方式工作?
请教各位大侠,有没有什么好的办法处理并发问题呢?
如果我要实现求解这样一个问题怎么做好呢?桌上有一盆菜,当有人看见自己喜欢吃就把一盆菜拿走了。言下之意,表中有诺干条记录,当用户看见这条记录有用就把这条记录抢走了,后来的人就看不见了。我如何在程序中实现让广大用户能够比较实时的看见记录已经被别人抢走了而不是在自己发出抢劫的命令后,得到回复已经被抢走了。
谢谢!希望大家多多讨论,共同进步!