OB占用磁盘

【 OB or 其他组件 】OB
【 使用版本 】v4.2.5.6
【问题描述】部署完OB,建了1个租户(4个数据库)还没跑业务,磁盘就占用200G,为何这么多?

@论坛小助手

根据您的描述,OceanBase 在部署完成后即使还未运行实际业务也可能占用一定的磁盘空间。这主要是因为 OBServer 节点在启动时会预分配一定量的日志文件,并为每个租户预留足够的日志盘空间以确保后续的正常运行。此外,还有其他一些因素也会导致初始状态下的磁盘占用较高。具体原因如下:

  1. 预分配的日志文件

    • 根据配置项 log_disk_sizelog_disk_percentage 的设置值,OBServer 会在启动时预先创建一定大小的日志文件池。比如如果设置了 log_disk_size = 100G,则启动时会立即占用 100G 空间作为日志存储。
    • 参考:log_disk_size 使用说明
  2. 租户和数据库元数据

    • 每个新创建的租户及其中的数据库都会有一些基础的元数据信息需要存储,虽然这些信息本身不会占用太多空间,但加上日志等文件后总占用量会有所增加。
  3. 系统表及默认数据

    • OceanBase 内部有一些系统级的表结构以及少量默认数据,这些都是为了保证系统的正常运作而存在的。
  4. 其他内部组件的需求

    • 包括但不限于事务管理、缓存机制(如 MemStore)、索引构建等过程中所需的临时或永久存储空间。

如果您想进一步了解具体是哪些部分占用了这么多的空间,可以使用以下方法查询相关信息:

  • 查看租户占用的磁盘空间
    可以通过查询 oceanbase.CDB_OB_SPACE_USAGE 视图来获取各个租户所占用的具体磁盘大小。例如:

    SELECT * FROM oceanbase.CDB_OB_SPACE_USAGE WHERE TENANT_ID = ${您的租户ID};
    

    更多详情请参考:查看租户或表占用的磁盘空间

  • 检查日志文件大小
    查看当前配置下预分配了多少日志空间,并确认是否可以根据实际需求调整这一参数减少初期占用。相关配置见上文链接中的 log_disk_size 部分。

希望上述信息能帮助您理解OceanBase在初始化阶段产生较大磁盘占用的原因。如果还有其他疑问或者认为现有配置不合理,请考虑联系技术支持团队获得更详细的指导。

检索到的文档如下:

  1. 常见内存问题
  2. 某租户下所有表占用磁盘大小
  3. 产品 FAQ
  4. SQL 性能问题的典型场景和排查思路
  5. 查看租户或表占用的磁盘空间
  6. 租户扩容
  7. 查看内存的使用信息
  8. 内存结构
  9. oceanbase.CDB_OB_SPACE_USAGE
  10. log_disk_size