OceanBase MySQL租户为何即支持自增列又支持序列,感觉使用哪个都可以的?

OceanBase MySQL租户为何即支持自增列又支持序列,感觉使用哪个都可以的?

4 个赞

是的,看使用场景

3 个赞

看业务使用场景吧,自增列好像有一些限制

1 个赞

功能多不好吗

2 个赞

序列可以是多表公用的;
自增列只是本表。

1 个赞

是的

说的对

感觉都差不多

@论坛小助手

OceanBase MySQL租户之所以同时支持自增列(auto_increment column)和序列(sequence),主要是为了满足不同业务场景的需求以及兼容Oracle的特性。具体原因如下:

  1. 从DB2 / Oracle向Oceanbase数据库MySQL模式的租户进行迁移时,业务中大量使用了sequence,为了减少迁移的复杂度,OceanBase在MySQL模式下支持了与Oracle行为兼容的sequence功能。
  2. 自增列和表绑定,无法独立创建和跨表使用,而序列则不受此限制,更加灵活。
  3. 自增列没有CYCLE能力,一旦达到最大值后就无法继续生成新的值;而序列支持循环序列,具有CYCLE能力,因此在需要循环使用的场景下,只能使用序列。
  4. 在分布式多机场景下,自增列的ORDER | NOORDER属性可能带来自增值的跳变问题,而序列可以更好地解决这一问题。例如,ORDER模式下的自增列在不同节点上申请自增值时可能会导致自增值跳变,而创建序列时,默认为NOORDER属性(为了和Oracle行为兼容),这可以避免自增值跳变的问题。
    综上所述,虽然自增列和序列在某些功能上有相似之处,但它们各自适用于不同的业务场景。OceanBase同时支持这两种特性,是为了给开发者更多的选择,以便根据具体需求选择最合适的方案。

检索到的文档如下:

  1. OceanBase 数据库在 MySQL 模式租户下的扩展功能
  2. 定义自增列