mysql - 如何使用原子操作交换 MEMSQL 表
问题描述
我有 2 个列存储MEMSQL表 a_primary 和 a_seconday。a_primary 负责为所有读取请求提供服务。我执行从仓库到 a_secondary 表的数据刷新。数据加载和分析完成后,我想将 a_secondary 设置为主表。我在 mysql选项中尝试过热插拔表,但没有奏效。
其他选项例如在主表顶部创建视图并在加载完成后将其更改为指向辅助表。
有什么建议如何使用原子操作以最佳方式交换 2 个memsql表?
解决方案
是的,您可以为此目的使用视图。您可以使用 ALTER VIEW 以原子方式将视图从一个表更改为另一个表。这听起来对您的用例来说是一个不错的选择,因为您只需要原子交换可以引用视图的读取请求,而写入请求则直接引用底层基表。
不幸的是,目前不可能在 MemSQL 中自动交换表名。您可以使用多个单独的 ALTER TABLE RENAME 命令交换表名:B->C、A->B 和 C->A。但它不是原子的,并且在此过程中表格的可见性存在差距。
推荐阅读
- react-native - React-Native TabNavigator tabPress 按下时未设置为活动状态
- android - 如何在不更改我的应用程序结构的情况下解决 E/AndroidRuntime: FATAL EXCEPTION: main android.os.NetworkOnMainThreadException?
- c++ - C++ isfproxies_cpp.dll 0xC0000005:访问冲突写入位置
- c++ - 是否有获取当前线程的 STL 方式?
- flutter - 使用共享首选项颤动地图的本地持久性
- javascript - 实现“getLiquidity”功能到 js 代码 Getpair Bot 用于 pancakeswap
- macos - mac big sur 上的 SVN 客户端数小时未扫描
- javascript - 如何让我的 React 应用程序仅在完成昂贵的计算时才呈现?
- reactjs - 我得到了(TypeError:无法读取未定义的属性“向下”)
- android - Android AR 功能 - 应用程序因内存不足而被杀死