mysql租户和oracle租户可以创建缓存表吗?

@论坛小助手 坛小助手
alter table t cache;
alter table t nocache;
执行这个命令会报错,是不支持创建缓存表吗?

您好,您提的这个技术问题可能牵涉到 OceanBase 企业版范围内的功能细节;针对此类问题,建议你通过以下方式寻求帮助:

  1. 如你所在的企业客户已签署 OceanBase 企业版销售合同,请你联系客户经理;

  2. 如你所在的企业客户尚未签署 OceanBase 企业版销售合同,你可通过OceanBase官网商务咨询页面留下你的联系方式,OceanBase企业版的业务顾问会在一个工作日内与你联系。

另外,我们欢迎你使用社区版,并在论坛/社群中分享你对社区版本的想法、经验和问题,与其他社区成员共同交流。

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

2 个赞

这不是创建缓存表吧。。oracle语法里面将这表保留在内存中,目前好像不支持

1 个赞

你好,OceanBase 目前是不支持创建缓存表(CACHING TABLE)的,不支持“ALTER TABLE … CACHE”这种用法。
缓存表的设计是把经常访问的小表放入缓存中,来提高性能。OceanBase 的存储层内置了多级缓存机制,虽不支持显式的配置缓存表,但也可自动缓存高频访问的小表数据。

  • Row Cache
    针对每个 SSTable 缓存具体的数据行,在进行 Get/MultiGet 查询时,可以将对应查到的数据行放入 Row Cache,这样在下次走到对应行查询时就可以避免多次二分定位对行的查找。
  • Block Cache
    类似于 Oracle 的 Buffer Cache,缓存具体的数据微块,每个微块都会解压后装载到 Block Cache 中, 因此每个 cache 大小都是变长的。
  • Fuse Row Cache
    在 LSM-Tree 架构中, 同一行的修改可能存在于不同的 SSTable 中,OceanBase 数据库为了进一步优化存储占用,每次用户的更新都只会存储增量数据,因此在查询时需要对各个 SSTable 查询的结果进行融合,当用户不再触发新的更新时,这个融合结果对查询都是一直有效的,因此 OceanBase 数据库也提供了对于熔合结果缓存的 Fuse Row Cache,更大幅度支持部分用户的热点行查询。

通过多级缓存和查询优化,可实现类似 Oracle 小表缓存的效果,同时减少人工调优,通过自动化机制最大化缓存效率。

参考资料:

  1. ALTER TABLE
    https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002017459

  2. 多级缓存
    https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001500058

4 个赞

学习了

2 个赞

咋又绕到企业版啦?

应该是不支持显式指定创建缓存表