开发者社区> 问答> 正文

canal.instance.memory.rawEntry 这个参数的作用是什么

环境信息

canal version 1.1.2 mysql version 5.7

问题描述

canal.instance.memory.rawEntry = true 这个参数解决什么问题,设置为true/false的好处是什么 我看这个文档https://github.com/alibaba/canal/wiki/AdminGuide 里没有更新这个参数。

另外建议新版本有新增的参数后,及时更新下wiki

原提问者GitHub用户lanxinxu

展开
收起
古拉古拉 2023-05-08 13:58:50 72 0
2 条回答
写回答
取消 提交回答
  • 看了下代码,看起来是性能优化相关的内容。将序列化工作由SessionHandler提前到加入ringbuffer前,以便能够最大限度并行化

    原回答者GitHub用户lanxinxu

    2023-05-09 17:55:26
    赞同 展开评论 打赏
  • 随心分享,欢迎友善交流讨论:)

    canal.instance.memory.rawEntry 参数表示是否启用原始数据对象(RawEntry)内存复用。RawEntry 是 Canal 中的一个重要对象,它用于表示 binlog 中的一条数据记录。在启用 RawEntry 内存复用时,Canal 将会尝试复用 RawEntry 对象的内存,以减少内存分配和垃圾回收的开销,从而提高性能和减少内存消耗。

    具体来说,当 canal.instance.memory.rawEntry 参数设置为 true 时,Canal 将会使用一个基于 Netty 的内存池来管理 RawEntry 对象的内存。这个内存池的大小可以通过 canal.instance.memory.buffer.size 参数进行配置。当 RawEntry 对象不再使用时,Canal 不会立即释放它们的内存,而是将它们返回给内存池,以便下次使用。这种方式可以减少内存分配和垃圾回收的次数,从而提高性能和减少内存消耗。但是,启用 RawEntry 内存复用也会带来一些风险,例如可能会导致内存泄漏或对象池溢出等问题。

    因此,您需要根据实际情况和需求来设置 canal.instance.memory.rawEntry 参数。如果您的数据量较大,可以考虑启用 RawEntry 内存复用,以提高性能和减少内存消耗。如果您需要更稳定的性能和更可靠的内存管理,可以禁用 RawEntry 内存复用,以避免风险。

    2023-05-08 14:08:19
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载