首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL设计:大表、线程访问序列化

SQL设计:大表、线程访问序列化
EN

Stack Overflow用户
提问于 2009-11-30 03:07:02
回答 4查看 390关注 0票数 0

我有一个大桌子(90K行,大小cca 60mb),里面有大约50家酒店的免费客房容量信息。这个表每小时只有很少的更新/插入。我的应用程序每秒最多发送30次异步请求到这个(和连接的表)。

当我一次启动30个线程(默认AppPool类的SQL3.5 C#) (使用随机有效的.NET查询字符串)时,只有几个线程(CCA4)被异步处理,其他线程等待。为什么?是因为SQL server2008表锁定,还是因为.NET内核?还是别的什么?

如果这是一个SQL问题,如果我将这个大表分成每个酒店模型的一个表,可以有所帮助吗?我的目标是一次至少有10个线程servet。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-11-30 03:39:21

这张桌子很小。它甚至不是一个“中等大小”的桌子。这是微不足道的。

你可以每秒全表扫描它30次,你可以把整个东西复制到ram中,没有服务器会有丝毫的麻烦。

如果你的数据可以放在内存中,那么数据库是很快的。如果你找不到这个,那你就做错了什么。因此,我也认为问题都在客户端。

票数 3
EN

Stack Overflow用户

发布于 2009-11-30 03:15:31

这很可能发生在.NET方面。如果是表锁,则会有更多的线程正在处理,但它们会等待查询返回。如果我没记错的话,线程池有一个属性,可以控制它们一次创建多少实际线程。如果挂起线程的数量超过这个数字,那么它们就会排队等待正在运行的线程完成。看看这个。

票数 0
EN

Stack Overflow用户

发布于 2009-11-30 03:55:00

您是否尝试过更改事务隔离级别?

即使从表中读取数据,Sql Server也会锁定该表

尝试将隔离级别设置为读取未提交,看看这是否会改善情况,

但请注意,如果这是解决方案,请确保您了解其后果,这样做是可行的

这个链接解释了它是什么。

link text

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1816441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档