我们使用mysql(AWS aurora)来存储我们的在线支付交易数据。我们的一个表拥有超过 10 亿行,其中每一行都存储特定事务的信息。
如何为交易添加新属性?更改此表是不可能的,因为这样做需要大量时间。
唯一可能的解决方案似乎是创建一个新表来存储每个事务的键值对。假设不可能改变表结构,是否有其他更有效的方法来做到这一点?
最佳答案
另一种方法是创建并行表。它将具有与当前表相同的PRIMARY KEY
(但没有AUTO_INCRMENT
)。它会有"new"列。
然后您将 JOIN
加入 PK 以同时获取旧列和新列。
优点:没有停机时间,没有大的更改等。
缺点:现在表格被分成两部分。后续添加的列也会遇到同样的困境。
替代方案:将 JSON 列放入该新表中。
优点:非常开放式,可以添加更多列。
缺点:不能很好地建立索引。 (这取决于您使用的版本。)
关于mysql - mysql 中修改表的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59099664/