首页 > 解决方案 > 如何使用原子操作交换 MEMSQL 表

问题描述

我有 2 个列存储MEMSQL表 a_primary 和 a_seconday。a_primary 负责为所有读取请求提供服务。我执行从仓库到 a_secondary 表的数据刷新。数据加载和分析完成后,我想将 a_secondary 设置为主表。我在 mysql选项中尝试过热插拔表,但没有奏效。

其他选项例如在主表顶部创建视图并在加载完成后将其更改为指向辅助表。

有什么建议如何使用原子操作以最佳方式交换 2 个memsql表?

标签: mysqlsinglestore

解决方案


是的,您可以为此目的使用视图。您可以使用 ALTER VIEW 以原子方式将视图从一个表更改为另一个表。这听起来对您的用例来说是一个不错的选择,因为您只需要原子交换可以引用视图的读取请求,而写入请求则直接引用底层基表。

不幸的是,目前不可能在 MemSQL 中自动交换表名。您可以使用多个单独的 ALTER TABLE RENAME 命令交换表名:B->C、A->B 和 C->A。但它不是原子的,并且在此过程中表格的可见性存在差距。


推荐阅读