oceanbase支持创建内存表吗?怎么创建的?
根据文档库中的信息,OceanBase 数据库支持创建行存表,但并没有明确提到“内存表”这一概念。在数据库领域,“内存表”通常指完全存储在内存中的表,而 OceanBase 的行存表数据仍然会从内存(MemTable)逐步转储到磁盘(SSTable),因此严格意义上并不是传统意义上的“内存表”。
创建行存表
OceanBase 社区版支持通过 WITH COLUMN GROUP(all columns)
选项创建行存表。以下是具体步骤和示例:
-
默认配置
如果租户的配置项default_table_store_format
设置为'row'
(默认值),则创建的表默认为行存表。 -
显式创建行存表
如果default_table_store_format
不是'row'
,可以通过以下 SQL 显式创建行存表:CREATE TABLE tbl1_cg (col1 INT PRIMARY KEY, col2 VARCHAR(50)) WITH COLUMN GROUP(all columns);
注意事项
- 即使后续执行了
DROP COLUMN GROUP(all columns)
命令删除列组,表仍然保持为行存储格式。 - 行存表适合频繁更新和小规模查询的场景。
关于内存特性
虽然 OceanBase 不支持传统意义上的“内存表”,但其 LSM-Tree 存储引擎将增量数据存储在内存中的 MemTable 中,直到达到一定阈值后才会触发转储到磁盘上的 SSTable。这种机制使得 OceanBase 在写入性能上具有显著优势。
如果需要更高的内存利用率或更快的访问速度,可以结合以下方法优化:
- 调整租户内存中 MemTable 的比例,增加可写入内存。
- 使用高性能 SSD 或 NVMe 磁盘减少转储延迟。
总结
OceanBase 社区版不支持传统意义上的“内存表”,但可以通过 WITH COLUMN GROUP(all columns)
创建行存表,并利用 LSM-Tree 的内存存储特性提升性能。如果您需要完全基于内存的表,请考虑其他专门设计的内存数据库产品。
依据的文档名称及段落标题:
检索到的文档如下:
OB的表的写操作都在内存中,大的查询会使用磁盘数据,调大内存内参数,间接把这个表放入内存里
没听说过这个东西,ob本身就是准内存数据库
像hana这种?
你说的应该是buffer表,建议去官网查询下相关资料