我有一个非常高吞吐量的生产Web应用程序,我需要为其设计有效的SQL汇总表。对于通过应用程序的每个请求,我需要将4或5个值附加到数据库中的每小时或每日统计数据
我想到的三个选项:
我从经验中知道,生产中应用程序的吞吐量足够高,任何不断更新单行的尝试都会导致巨大的等待锁并使所有线程停滞
这也意味着我总是要做一个类似" UPDATE WHERE今天的查询.. ROWS EFFECTED == 0? INSERT ..."这似乎是一个糟糕的模式
由于超高吞吐量,此表每天至少会增加几百万行。由于我需要永远保留这些数据,因此表格大小会成为一个真正的问题
让我说我设置一个工作来从选项2表中汇总数据,然后插入一个单独的汇总表,然后从选项2表中删除
我认为使用此解决方案的问题是,在DELETE过程中,表会锁定并导致应用程序中的INSERT延迟,遗憾的是,即使在几秒钟内也不会接受
我实际上对这种情况下的最佳做法感到茫然,我们将非常感谢任何输入。