OB 日志区推荐大小是机器内存的3-4倍,还是其他的占用内存的3-4倍

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】V4.3.5
【问题描述】OB 日志区推荐大小是机器内存的3-4倍,还是其他的占用内存的3-4倍
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

您的问题可能存在误解,实际上据我所知,OceanBase 数据库的日志区(如 CLOG、SLOG 等)推荐大小并不是机器内存的 3-4 倍,也不是其他占用内存的 3-4 倍。根据文档中的信息:

  • 在 OceanBase 数据库 V4.0 版本开始,支持日志和其他文件放在一起,并引入了配置项 log_disk_sizelog_disk_percentage 来让用户配置日志盘空间的具体大小。具体的配置建议如下:
    • 如果用户配置 log_disk_size = 0,则根据 log_disk_percentage 来分配日志盘空间。
    • log_disk_sizelog_disk_percentage 均为 0(默认值)时,磁盘空间计算方式取决于数据和 CLOG 是否同盘。如果同盘,数据占用盘的 60%,CLOG 占用盘的 30%;如果不同盘,两者各占 90%。

以上信息来源于《产品 FAQ → 内存 FAQ → OceanBase 数据库进行一次内存分配会检查哪些限制?》以及《OceanBase 数据库性能的影响因素 → 资源分配 → 磁盘划分》。

因此,对于 OB 日志区的大小,您应该基于实际的磁盘情况来合理配置 log_disk_size 或者 log_disk_percentage 参数,而不是依据机器内存或其他占用内存的比例。如果您有更具体的需求或场景,请提供更多信息,以便给出更准确的建议。

具体信息可参考以下文档:

  1. 数据库内存上限
  2. BootStrap
  3. 内存相关参数
  4. 产品 FAQ
  5. OceanBase 数据库性能的影响因素
  6. memory_limit
  7. 租户内部内存管理
  8. Redo 日志

@论坛小助手
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002016081

  1. 文档中心
  2. OceanBase 数据库
  3. SQL 型
  4. V4.3.5
  5. 部署数据库
  6. 部署 OceanBase 社区版
  7. 本地部署
  8. 部署前配置

这里写着 在相同数据量的情况下,事务日志的大小约为内存数据大小的三倍。因此事务日志盘所需空间上限与两次合并后的数据总量成正比。经验公式:事务日志文件大小 = 增量数据内存上限的 3~4 倍。
就是 这个内存是什么内存不清楚

感谢您提供的补充信息。根据您引用的文档内容,事务日志(CLOG)的大小确实与内存数据大小有关。具体来说,在相同数据量的情况下,事务日志的大小约为内存数据大小的三倍。因此,事务日志盘所需空间上限与两次合并后的数据总量成正比。经验公式为:事务日志文件大小 = 增量数据内存上限的 3~4 倍

这里的“内存数据大小”或“增量数据内存上限”指的是 MemStore 中的数据量,即在内存中尚未转储到磁盘的增量数据。MemStore 是 OceanBase 数据库中用于存储最近写入的数据的内存区域。当 MemStore 达到一定阈值时,会触发转储操作,将数据从内存转储到磁盘上的 SSTable 文件中。

具体解释如下:

  1. MemStore

    • MemStore 是 LSM-Tree 结构中的内存部分,用于存储最近写入的数据。
    • 当 MemStore 达到一定阈值(例如 memstore_limit_percentage 配置项设置的比例),会触发转储操作,将数据从内存转储到磁盘上的 SSTable 文件中。
  2. 事务日志(CLOG)

    • CLOG 记录了所有事务的操作日志,确保在故障恢复时可以重放这些日志以恢复数据的一致性。
    • 在事务提交时,CLOG 会记录事务的所有变更操作,因此其大小与内存中未转储的数据量(即 MemStore 中的数据量)密切相关。
  3. 经验公式

    • 事务日志文件大小 = 增量数据内存上限的 3~4 倍
    • 这里的“增量数据内存上限”指的是 MemStore 中的数据量,即在内存中尚未转储到磁盘的增量数据。

配置建议:

  • log_disk_sizelog_disk_percentage

    • 如果您希望基于机器的总磁盘空间来配置事务日志盘的空间,可以使用 log_disk_percentage 参数。
    • 如果您希望显式指定事务日志盘的具体大小,可以使用 log_disk_size 参数。
  • memstore_limit_percentage

    • 该参数控制 MemStore 占租户内存的比例,默认值为 50%。您可以根据实际业务需求调整此参数,但需要注意的是,过大的 MemStore 可能会导致内存超限的风险。

示例配置:

假设您的机器有 1TB 的磁盘空间,并且您希望将 30% 的磁盘空间分配给事务日志盘,则可以配置如下:

alter system set log_disk_percentage = 30;

或者,如果您希望显式指定事务日志盘的具体大小为 300GB,则可以配置如下:

alter system set log_disk_size = '300G';

同时,假设您的 MemStore 限制为租户内存的 50%,并且租户内存为 100GB,则 MemStore 的大小为 50GB。根据经验公式,事务日志文件大小应为 50GB * 3~4 = 150GB ~ 200GB。

希望以上解释能够帮助您更好地理解事务日志大小与内存数据大小的关系。如果有更多问题,请随时提问!

详情请参考:

  1. 产品 FAQ
  2. 事务相关规范
  3. 数据库内存上限
  4. Redo 日志
  5. 内存相关参数
  6. OceanBase 数据库性能的影响因素
  7. 备份架构

日志盘的大小给我们生产推荐的是机器内存的4倍

是机器内存的3-4倍,还是 增量数据的3-4倍;
文档里写的是 租户MemStore的3-4倍。
如果是机器内存3-4倍,那硬盘容量有点夸张

您提到的文档内容确实表明事务日志(CLOG)的大小与 租户 MemStore 中的数据量有关,而不是机器内存。具体来说,事务日志文件大小应为 增量数据内存上限的 3~4 倍,这里的“增量数据内存上限”指的是 租户 MemStore 中的数据量。

明确说明:

  • 不是机器内存的 3-4 倍:事务日志的大小并不是基于整个机器的物理内存来计算的。
  • 而是租户 MemStore 的 3-4 倍:事务日志的大小是基于租户中尚未转储到磁盘的增量数据(即 MemStore 中的数据)的大小来计算的。

具体解释:

  1. MemStore

    • MemStore 是 OceanBase 数据库中用于存储最近写入的数据的内存区域。
    • 当 MemStore 达到一定阈值时,会触发转储操作,将数据从内存转储到磁盘上的 SSTable 文件中。
  2. 事务日志(CLOG)

    • CLOG 记录了所有事务的操作日志,确保在故障恢复时可以重放这些日志以恢复数据的一致性。
    • 在事务提交时,CLOG 会记录事务的所有变更操作,因此其大小与内存中未转储的数据量(即 MemStore 中的数据量)密切相关。
  3. 经验公式

    • 事务日志文件大小 = 租户 MemStore 中增量数据的 3~4 倍
    • 这里的“增量数据”指的是在 MemStore 中尚未转储到磁盘的数据。

示例计算:

假设您的租户配置如下:

  • 租户内存 (memory_size):100GB
  • MemStore 占比 (memstore_limit_percentage):50%

那么,MemStore 的大小为:

[ \text{MemStore 大小} = 100GB \times 50% = 50GB ]

根据经验公式,事务日志文件大小应为:

[ \text{事务日志文件大小} = 50GB \times 3~4 = 150GB~200GB ]

配置建议:

  • log_disk_sizelog_disk_percentage
    • 如果您希望基于机器的总磁盘空间来配置事务日志盘的空间,可以使用 log_disk_percentage 参数。
    • 如果您希望显式指定事务日志盘的具体大小,可以使用 log_disk_size 参数。

例如,如果您希望将 30% 的磁盘空间分配给事务日志盘,则可以配置如下:

alter system set log_disk_percentage = 30;

或者,如果您希望显式指定事务日志盘的具体大小为 300GB,则可以配置如下:

alter system set log_disk_size = '300G';

总结:

事务日志(CLOG)的大小是基于 租户 MemStore 中增量数据的 3~4 倍,而不是机器内存的 3~4 倍。这样可以确保事务日志有足够的空间来记录事务操作,同时不会导致硬盘容量过于夸张。

如果有更多问题或需要进一步的帮助,请随时提问!

具体信息可参考以下文档:

  1. 内存相关问题
  2. 租户内部内存管理
  3. system_memory
  4. (可选)查看资源
  5. freeze_trigger_percentage
  6. 清理 WR 数据
  7. memstore_limit_percentage
  8. 产品 FAQ
  9. 在您开始前

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

集群的设置建议是集群内存的3-4倍,租户建议设置成租户内存的3-4倍,ob日志会存在写放大的问题,日志盘设置为3-4倍主要是为了防止日志盘爆满而导致的禁写问题

那日志区的大小 标准应该是什么
集群内存 是哪个参数
租户我知道是 memstore

推荐为ob内存的3-4倍

为啥和文档都不一致? 有没有权威的说下
文档写的是 MemStore 内存的 3-4倍


https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002016081

你看的哪个文档写的是 MemStore 内存的 3-4倍?发一下链接

在相同数据量的情况下,事务日志的大小约为内存数据大小的三倍。因此事务日志盘所需空间上限与两次合并后的数据总量成正比。经验公式:事务日志文件大小 = 增量数据内存上限的 3~4 倍。

这个?

链接能发出来看一下么