我们有一个系统,客户将按照先来先服务的原则分配产品。我们的产品表包含了一个从零开始的自增主键,用于追踪已分配多少产品,即用户预订产品时得到1个,下一个用户得到2个,以此类推。
问题在于,在任何给定的小时内,可能会有数十万用户访问系统,全部都会访问这个表。
由于我们需要确保每个客户只分配一个产品并追踪已分配多少产品,因此我们为访问系统的每个客户使用一行锁来确保他们在下一个客户访问系统之前写入表 - 即强制执行先到先得的规则。
我们担心的是每个请求进入 SQL Server 2008 Enterprise Edition 和行锁定的处理时间成为瓶颈。
我们不能使用多个服务器,因为我们需要确保主键的完整性,所以任何需要复制的东西都不会起作用。
是否有人知道任何有效地处理大量请求的数据库表的好方法?
更多信息:
问题中的表实际上仅包含两个字段 - ID 和 CustomerID。该解决方案是为100万件产品进行免费赠品 - 因此对高需求的期望以及为什么使用递增的主键作为关键字对我们很有意义 - 一旦关键字达到100万,就没有更多的客户可以注册。此外,产品都是不同的,因此分配正确的关键字非常重要,例如首先输入的100个客户会收到比下一个100个客户更高价值的产品等。
问题在于,在任何给定的小时内,可能会有数十万用户访问系统,全部都会访问这个表。
由于我们需要确保每个客户只分配一个产品并追踪已分配多少产品,因此我们为访问系统的每个客户使用一行锁来确保他们在下一个客户访问系统之前写入表 - 即强制执行先到先得的规则。
我们担心的是每个请求进入 SQL Server 2008 Enterprise Edition 和行锁定的处理时间成为瓶颈。
我们不能使用多个服务器,因为我们需要确保主键的完整性,所以任何需要复制的东西都不会起作用。
是否有人知道任何有效地处理大量请求的数据库表的好方法?
更多信息:
问题中的表实际上仅包含两个字段 - ID 和 CustomerID。该解决方案是为100万件产品进行免费赠品 - 因此对高需求的期望以及为什么使用递增的主键作为关键字对我们很有意义 - 一旦关键字达到100万,就没有更多的客户可以注册。此外,产品都是不同的,因此分配正确的关键字非常重要,例如首先输入的100个客户会收到比下一个100个客户更高价值的产品等。