我们有一个系统,客户按照先到先得的原则分配产品.
我们的产品表包含一个从零开始的递增主键,我们用它来跟踪已分配的产品数量,即用户保留产品并分配1,下一个用户获得2等.
问题是,在任何给定的时间内,可能有数十万用户访问系统.所有人都会打这一张桌子.
由于我们需要确保每个客户只分配一个产品并跟踪已分配的产品数量,我们对访问系统的每个客户使用行锁定,以确保他们在下一个客户到达系统之前写入表格 - 即执行先到先得的规则.
我们关注的是瓶颈,即每个请求进入SQL Server 2008 Enterprise Edition和行锁的处理时间.
我们不能使用多个服务器,因为我们需要确保primay密钥的完整性,因此任何需要复制的东西都不会起作用.
有没有人知道在一个数据库表上处理大量请求特别有效的任何好解决方案?
更多信息:
有问题的表基本上只包含两个字段--ID和CustomerID.解决方案是免费赠送一百万种产品 - 因此对高需求的期望以及为什么使用递增的主键作为关键对我们来说是有意义的 - 一旦密钥达到一百万,就没有更多的客户可以注册.此外,产品都是不同的,所以正确密钥的分配是重要的,例如,前100名客户输入接收比下一个100等更高价值的产品
有没有人知道任何错误或其他见解来解释为什么当使用MVC4和jquery mobile时,任何使用Ajax.BeginForm创建的表单都会导致表单被提交两次到控制器.
我原本以为,因为我使用js捆绑,相同的js文件可能被包含两次并且可能在表单提交时触发,但事实并非如此,我的js文件列表是:
jquery-1.6.4.js
jquery-ui.1.8.11.js
jquery.mobile-1.1.0.js
jquery.unobtrusive-ajax.js
jquery.validate.js
knockout-2.0.0.js
MicrosoftAjax.js
MicrosoftMvcAjax.js
MicrosoftMvcValidation.js
Modernizr.js
Run Code Online (Sandbox Code Playgroud)
在项目中,Ajax完全启用了所有功能,即我没有通过mobileinit禁用任何内容.
我没有发布任何表单代码,因为它确实与每个表单一起发生 - 具有一个字段和提交按钮的表单将导致提交两次 - 但仅限于使用Ajax.BeginForm的地方.
Html.BeginForm没有出现任何这些问题.
我已经坚持了几天,所以任何帮助将不胜感激