2015-03-25 48 views
0

有1000多个请求来更新1个或更少1秒内的单个特定记录。我们如何处理这个问题,每一个请求都是非常重要。 *更新一个特定数据记录需要1秒钟的很多请求

假设,1秒= 1000 +的要求来更新只是一个特定的记录

+0

“每一个请求”如何“非常重要”?所有这些,但最后一个被完全覆盖并被随后的那些丢弃。也许最好跟踪某处的最新值,并定期将其提交给数据库。我想这在一定程度上取决于读取/检索值的频率。 – eggyal 2015-03-25 12:23:08

+0

每个请求都非常重要,因为我的应用程序是用于快速购买和销售产品。每一个请求都来购买一个产品。所以更新的请求将总是再次购买该产品。该产品只有1个数量。因此每个用户请求都会购买该产品,成为该产品的所有者。 我有用户owner_id字段,当有新的请求时,我正在发送消息,说明新用户已经购买了该产品。 – 2015-03-25 12:32:10

+0

@makashtekar。 。 。而你在说成千上万的人每秒都在购买同样的产品?这比在即使繁忙的电子交易市场上处理出价要快。 – 2015-03-25 13:46:23

回答

2

这是一个评论太长。

在现代计算机上,每秒更新1,000次是非常可行的。但是,单条记录上的很多更新都会造成问题。您可以设计硬件 - 比如使用内存表或固态硬盘 - 可以实现这一点。

但是,通常需要这种类型的结构来保持最新的东西。您可以改为在表格中插入一个新行,并让任何需要“当前值”的应用程序获取最近的行。当然,如果你正在使用这些值并覆盖它们,那么就会引发更多的争用。

+0

每个请求都会更新数据库中的一条记录。 – 2015-03-25 12:42:27

+0

@makashtekar这就是为什么GL提出另一种设计 – Strawberry 2015-03-25 12:53:29

+0

我认为问题是与数据库 这事情发生这样的假设 ,有10个请求, 当服务器执行请求1,在平均时间2日还有其他请求到来,现在,服务器很聪明,它不会把请求放入队列中。所以服务器也会开始执行第二个请求。当服务器开始执行2nd时,让第一个请求进行到30%,第二个请求到10%。现在, 在这里,每个请求只更新一个特定的行。 因此可以说,当请求达到70%时,它更新数据库中的记录,当达到90%时,它将新记录插入到另一个表中,比如feed。续 – 2015-03-25 12:56:38