我们有一个系统,客户在先到先得的基础上分配产品。针对一个数据库表上大量请求的最佳解决方案
我们的产品表包含开始于零,我们用它来跟踪有多少产品已分配即用户保留一个产品,并得到分配1递增的主键,接下来用户将获得2等
问题在于,潜在成千上万的用户会在任何给定的小时内访问系统。所有的人都会打这张桌子。
由于我们需要确保每个客户只分配一个产品并跟踪有多少产品已分配,因此我们对每个访问该系统的客户使用一个行锁,以确保他们在下一个客户之前写入表中击中系统 - 即执行先来先服务的规则。
我们关注的是每个请求进入SQL Server 2008企业版和行锁的处理时间的瓶颈。
因为我们需要确保primay关键的完整性,因此任何需要复制行不通的,我们不能使用多台服务器。
有谁知道有什么好的解决方案,在处理上一个数据库表的请求数量庞大的特别有效的?
多一点信息: 有问题的表基本上只包含两个字段 - ID和客户ID。解决方案是免费赠送一百万件产品 - 因此对高需求的预期以及为什么使用增量主钥匙作为关键对我们有意义 - 一旦关键点击数百万,则不再有客户可以注册。而且,这些产品都是不同的,因此分配正确的密钥是重要的,例如,前100名顾客进入receieve更高价值的产品比下100等
感谢您的帮助。
能否请您重新标签,包括[SQLSERVER]你能告诉我的版本及版本,如果您编辑您的问题,并告诉我们你有'SQL2008企业Edition'例如,我们也许能够提供量身定做的解决方案如表分区可在SQL 2008 EE – 2012-03-28 03:16:18
谢谢Jeremy。增加了额外的信息。 – 2012-03-28 03:22:03
明显的第一个问题;你是否剥夺了获得密钥的事务中的所有其他内容?例如。在尝试获得关键所需知道的一切之前,你知道吗?去桌子上拿钥匙,然后再做其他的事情? – Karl 2012-03-28 03:40:56