mysql - mysql 中修改表的替代方案

标签 mysql database database-design

我们使用mysql(AWS aurora)来存储我们的在线支付交易数据。我们的一个表拥有超过 10 亿行,其中每一行都存储特定事务的信息。

如何为交易添加新属性?更改此表是不可能的,因为这样做需要大量时间。

唯一可能的解决方案似乎是创建一个新表来存储每个事务的键值对。假设不可能改变表结构,是否有其他更有效的方法来做到这一点?

最佳答案

另一种方法是创建并行表。它将具有与当前表相同的PRIMARY KEY(但没有AUTO_INCRMENT)。它会有"new"列。

然后您将 JOIN 加入 PK 以同时获取旧列和新列。

优点:没有停机时间,没有大的更改等。

缺点:现在表格被分成两部分。后续添加的列也会遇到同样的困境。

替代方案:将 JSON 列放入该新表中。

优点:非常开放式,可以添加更多列。

缺点:不能很好地建立索引。 (这取决于您使用的版本。)

关于mysql - mysql 中修改表的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59099664/

相关文章:

mysql - 用于搜索的 Rails Gem

php - 产品 ID 未存储在数据库中

android - SQLite openOrCreateDatabase 未知错误(代码 14): Could not open database

php - 在Mysql和PHP "Access denied for user '中编辑记录页面'@'localhost'到数据库 'linkyoutube''

java - JPA criteriabuilder where 语句

php - 尝试将查询结果放在表格中?

安卓在线动态数据库

mysql - 在数据库中做灵活列的正确方法是什么?

postgresql - 将表示时间戳的字符串转换为 PostgreSQL 中的实际时间戳?

database-design - RethinkDb 中唯一的整数计数器