【问题标题】:Memsql Auto IncrementMemsql 自动增量
【发布时间】:2023-03-04 19:02:01
【问题描述】:

我是 Memsql 的新手。我遇到了 Memsql 自动增量的问题。

我用id(auto increment=1) 创建了一个新表。使用 insert 命令手动插入时,它显示 id(auto increment) 1,但使用 spark 时,它从 48,413,695,994,232,833 开始。

在 Spark 中,我正在创建虚拟数据 val test = Seq(("Test1", "600482", "46987"),("Test2", "600204", "4870A"),("Test3", "600204", "469870A")).toDF("confid", "confidprefix","salesid")

我用过 memsql-connector_2.11-2.0.4.jar,memsql-connector_2.11-2.0.2.jar。

【问题讨论】:

  • 我们在移除主聚合器并让子聚合器接管时遇到了这种情况。这不适用于 javascript,因为 js 中的最大数字值为 9007199254740991,小于 memsql 自动递增的数字。

标签: singlestore


【解决方案1】:

在 MemSQL 中,auto_increment 仅保证自动生成的值是唯一的 - 而不是它们像 1、2、3 那样是连续的...参见https://docs.memsql.com/sql-reference/v6.0/create-table/#auto-increment-behavior

【讨论】:

  • 谢谢,我浏览了链接,但我有一个问题,我有两个集群,一个有 3 个节点,另一个有 5 个节点。在那个 5 个节点的集群中,只有我有这个问题,在 3 个节点的集群中,我对自动增量没有任何问题。
  • 就像我说的,这本身不是问题,只是MemSQL中auto_increment的设计。您不能依赖从 1 开始的 auto_increment 值。如果您需要此类功能,则需要在应用程序端自己生成值。生成的具体值取决于聚合器节点的数量,这就是为什么您会在不同大小的集群中看到不同的值。
【解决方案2】:

在我的 5 个节点 memsql 集群中,我有 2 个聚合器节点,主聚合器和子聚合器。 现在我刚刚从我的 memsql 集群中删除了那个子聚合器,现在工作正常。它正确生成自动增量ID。 请注意,自动生成的值可能会有所不同,具体取决于您在哪个聚合器上运行插入。当然,如果您在一个聚合器上运行一些插入,而在另一个聚合器上运行一些插入,您将获得不同的自动生成值。另请注意,自动生成的值和显式设置的值可能会发生冲突。

【讨论】:

    猜你喜欢
    • 2022-01-06
    • 2010-10-21
    • 2013-10-12
    • 2014-02-21
    • 2021-07-22
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多