环境信息
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
看了下代码,看起来是性能优化相关的内容。将序列化工作由SessionHandler提前到加入ringbuffer前,以便能够最大限度并行化
原回答者GitHub用户lanxinxu
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 内存复用,以避免风险。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。