0

我们将 MySQL 与 MyIsam 引擎一起使用,并且我们需要每天更新大量行(数百万行),而用户仍然可以访问数据库。

我们有来自美国、英国、印度、中国不同时区的用户。当用户首次注册时,数据是从第三方来源下载的。所有用户共享同一组表,但他们的数据不重叠,即没有用户将访问与另一个用户相同的行。

第三方系统会修改数据,以使我们的数据库保持最新,我们每晚下载用户数据的新快照。用户数据在相对于该用户时区的午夜更新。

由于所有用户共享同一张表,这意味着数据更新过程可以更新美国时区用户的数据,而英国用户正在积极浏览他们的数据。这就是问题所在。我们有数以百万计的数据要更新,但我们做不到。

请建议如何在不影响访问数据库的其他用户的情况下最好地更新用户的数据。数据库中存储的数据是数字,所有列都是整数。

4

1 回答 1

0

我看到两个解决方案:

  • 更改为 InnoDB 数据库引擎 - 这将为您提供行级锁定而不是表级锁定。请注意插入通常较慢。
  • 按地区划分你的桌子。根据您的情况,如果您的表格按区域划分,您将永远不会同时读取和写入任何表格。
于 2012-11-04T15:12:30.537 回答