1

我们使用 MYSQL InnoDB 引擎进行插入和更新操作,为了提高查询性能,我们正在考虑使用 Memory 表来存储最新数据 Ex. 最近两个月的数据。

我们可以配置MySQL在服务器启动时将数据导入Memory表,但是实际业务数据一直在更新,我们不得不经常将数据从InnoDB表同步到Memory表,但是我们不能每次都重启MySQL服务器来同步数据。

谁能知道如何在不重新启动 MySQL 的情况下同步数据?

4

1 回答 1

2

您通常会使用触发器来执行此操作。我的第一个想法是分两部分来做。

1) 在 innodb 表上创建用于插入、更新和删除(如果发生)的触发器,这会导致内存表中的相同更改。确保没有逻辑依赖于某些行已从内存表中删除,它将保留过去 2 个月,然后是一些。

2)创建一个后台作业,清除旧数据的内存表。如果您对它有很高的负载,请考虑一个频繁的工作,一次蚕食几行旧行。

另一种解决方案是按时间对 innodb 表进行分区,然后确保包含类似where time > subdate(now(), interval 2 month)

于 2012-04-06T07:50:33.607 回答