【发布时间】:2019-04-15 12:01:06
【问题描述】:
当前情况:
我们有数据库表来记录审计数据,并且查询在大多数时间基于object_id 而很少在created_date 范围内被触发。 audit_log 表存储最后一个月的数据,一个月后数据移动到archive_audit_log 表。这些表位于AmazonRDS。
CREATE TABLE IF NOT EXISTS audit_log (
id INT AUTO_INCREMENT,
object_id INT NOT NULL,
created_date DATE,
old_value TEXT,
new_value TEXT,
PRIMARY KEY (id)
) ENGINE=INNODB;
表中大约有 1M+ 条记录。
和对应的归档表结构完全相同。
CREATE TABLE IF NOT EXISTS archive_audit_log (
id INT AUTO_INCREMENT,
object_id INT NOT NULL,
created_date DATE,
old_value TEXT,
new_value TEXT,
PRIMARY KEY (id)
)ENGINE=ARCHIVE;
表中大约有 40M+ 条记录,并且不断增长,其中一个数据库中的当前大小为 (90 GB)。由于我们与客户的合同义务,此数据无法删除。
我面临的问题:
当我们查询archive_audit_log 时,UI 通常会超时。
执行任何导入/导出和每日备份以及许多其他操作都需要更长的时间。
我正在考虑的解决方案:
我正在考虑将archive_audit_log 数据移动到S3 到多个文件中,然后使用“Amazon Athena”服务进行查询以获得结果。
我想知道是否有人在烧我的手之前将AWS Athena 用于此类用例?
此外,是否有任何 limitation 或 restriction 应用于查询数量与结果中的记录数量?
感谢您阅读问题,任何指针将不胜感激。
【问题讨论】:
标签: mysql amazon-s3 amazon-rds amazon-athena