我有一个 mysql 数据库,每天约有 1.5 亿次插入,保留期约为 60 天。
- 每条记录都以 id 为索引。
- 每次更新发生如下:
- 查看记录是否存在。如果是,则使用新数据进行更新。
- 否则创建数据。
- 删除 60 天前创建的记录。
我的主要用例如下:
运行一些批量查询。例如。:
Select (*) from table where prop=val1 and prop2=val2 etc
将返回大量记录,例如。1M
以下方法是否良好:
- 拥有一个仅在 id 上具有索引的主数据库。保留 60 天。
- 已读取副本数据库。该数据库将在许多列上建立索引
- 所有批量查询都将针对只读副本数据库运行。
这是一个好的解决方案吗?
编辑:我计划使用 Amazon RDS DB 并在他们的文档中找到了这个:
Q: Can my Read Replicas only accept database read operations?
只读副本旨在为读取流量提供服务。但是,可能存在高级用户希望针对只读副本完成数据定义语言 (DDL) SQL 语句的用例。示例可能包括向用于业务报告的只读副本添加数据库索引,而不向相应的源数据库实例添加相同的索引。如果您希望为给定的只读副本启用读取以外的操作,则需要修改只读副本的活动数据库参数组,将“read_only”参数设置为“0”。</p>