【Mycat2】关于序列功能的一个 Bug

创建序列前 Mycat 的 sequences/ 目录情况:

创建一个 MySQL 生成方式的序列。

sql 复制代码
/*+ mycat:setSequence{"name":"sharding_db_not_tb111","clazz":"io.mycat.plug.sequence.SequenceMySQLGenerator"} */;

因为没有官方文档支持,起初尝试使用 dropSequencedeleteSequenceunsetSequence 注释,发现都不行。后查看 Mycat 2 源码发现确实没有设计删除序列的功能。

,

执行如下 Mycat 注释创建一个序列。

sql 复制代码
/*+ mycat:setSequence{"name":"sharding_db_not_tb111","clazz":"io.mycat.plug.sequence.SequenceMySQLGenerator"} */;

查看操作系统 Mycat 配置目录中的 sequences/ 子目录下生成了相应的配置文件。

上面说过无法通过 Mycat 语法删除这个序列,因而直接通过操作系统物理删除。可见,该配置文件已经删除了。

再次使用 Mycat 注释创建该序列。显示执行成功。

但查看存储时,却没有再次生成该配置文件。

这就很奇怪!!!

我分析怀疑是 Mycat 有缓存导致的,GC 没及时清理,导致误判该序列及配置文件已存在。

下面验证一下:

  1. 重启 Mycat 。

  2. 再次创建该序列。

  3. 查看存储,发现再次创建了该序列的配置文件。

至此,证实了我的猜测。

相关推荐
Java水解9 分钟前
Mysql查看执行计划、explain关键字详解(超详细)
后端·mysql
知其然亦知其所以然4 小时前
MySQL 社招必考题:如何优化查询过程中的数据访问?
后端·mysql·面试
DemonAvenger5 小时前
NoSQL与MySQL混合架构设计:从入门到实战的最佳实践
数据库·mysql·性能优化
程序新视界6 小时前
如何在MySQL中创建聚集索引?
mysql
AAA修煤气灶刘哥17 小时前
后端人速藏!数据库PD建模避坑指南
数据库·后端·mysql
程序新视界18 小时前
学习MySQL绕不开的两个基础概念:聚集索引与非聚集索引
mysql
RestCloud21 小时前
跨境数据传输:ETL如何处理时区与日期格式差异
mysql·api
RestCloud21 小时前
揭秘 CDC 技术:让数据库同步快人一步
数据库·api
得物技术1 天前
MySQL单表为何别超2000万行?揭秘B+树与16KB页的生死博弈|得物技术
数据库·后端·mysql
xiaok1 天前
mysql中怎么创建一个可控权限数据库账号密码给到开发者
mysql