详情页标题前

使用canal给rds和es同步,查询记录中使用distinct() ,没有报错,但是没有同步行为了-云小二-阿里云

详情页1

如题,由于原语句有业务数据就改为使用官方的实例进行提问了。官方对于一对多的语句样例为:

select
a.id as _id,
a.name,
a.role_id,
c.labels,
a.c_time from user a
left join (select user_id, group_concat(label order by id desc separator ‘;’) as labels from label
group by user_id) c on c.user_id=a.id

这里存在一个缺点是子表虽然有id字段的索引,但是由于作为join字段的同时也作为group条件,实际上是数据表全遍历的,通过explain就可以看到。实际业务表现很慢,无法满足真正的业务。我将查询优化。

select
a.id as _id,
a.name,
a.role_id,
group_labels(c.user_id),
a.c_time from user a
left join label c on c.user_id=a.id

这样是提高了速度,但是返回的多条子记录会加大了wirteout的压力,于是再次优化为:
select
disntinct(a.id) as _id,
a.name,
a.role_id,
group_labels(c.user_id),
a.c_time from user a
left join label c on c.user_id=a.id

结果同步没有报错,没有任何信息输出,及时打开到trace级别也是没有信息输出。看了源代码也没有看到什么问题,请问是什么原因吗?

canal deploy: 1.1.5

以下为热心网友提供的参考意见

根据您提供的信息,我猜测问题可能出在Canal部署版本上。您提到使用的是Canal 1.1.5版本,而这个版本可能存在一些已知的问题。建议您尝试升级到较新的Canal版本,例如2.0或更高版本,看看是否能解决问题。

另外,您可以尝试以下方法来优化查询性能:

  1. user表的id字段添加索引,以加速连接操作。
  2. label表的user_id字段添加索引,以加速连接操作。
  3. 考虑使用分区表,将数据按照某个字段(如user_id)进行分区,以提高查询性能。
  4. 如果可能的话,尝试调整数据库的配置参数,例如增加缓冲区大小、调整连接数等,以提高查询性能。

以下为热心网友提供的参考意见

楼主你好,在使用canal同步阿里云RDS和ES时,如果查询记录中使用了distinct(),而同步行为停止,可能是由以下原因引起:

  1. canal无法正确解析distinct()函数:canal在解析SQL语句时可能无法正确处理distinct()函数,导致同步停止。

  2. distinct()函数导致同步数据量过大:使用distinct()函数可以确保查询结果中没有重复的记录,但是可能会导致同步的数据量变得非常大,从而增加了写入ES的压力。

  3. canal配置不正确:检查一下canal的配置是否正确,特别是源数据库和目标ES的配置参数是否正确设置。

转转请注明出处:https://www.yunxiaoer.com/182154.html

(0)
上一篇 2024年1月10日 下午4:59
下一篇 2024年1月10日
详情页2

相关推荐

  • PolarDB-X中polardb 有透明加密的功能吗? -云小二-阿里云

    PolarDB-X中polardb 有透明加密的功能吗? 以下为热心网友提供的参考意见 “有的,https://help.aliyun.com/zh/polardb/polardb-for-xscale/configure-tde此群整理至钉群“阿里云 PolarDB-X 开源交流群”。” 以下为热心网友提供的参考意见 是的,Pola…

    阿里云 2023年12月5日
  • RDS有哪些参数?都有什么作用?-云小二-阿里云

    RDS有哪些参数?都有什么作用? 以下为热心网友提供的参考意见 RDS的参数类型主要包括整数、布尔值、字符串、长整型、双精度浮点数、时间戳,以及一些其他定义的数据类型的对象。以下是一些具体的参数及其作用: rds_threads_running_high_watermark:用于控制MySQL并发的查询数目,例如将其值设置为100,则允许MySQL同时进行的…

    2024年1月8日
  • 阿里云RDS数据库SwitchDBInstanceHA – RDS实例主备切换-云淘科技

    该接口用于RDS实例的手动主备切换。 接口说明 适用引擎 RDS MySQL RDS PostgreSQL RDS SQL Server RDS MariaDB 相关功能文档 注意 使用该接口前,请仔细阅读功能文档,确保完全了解使用接口的前提条件及使用后造成的影响后,再进行操作。 RDS MySQL主备切换 RDS PostgreSQL主备切换 RDS SQ…

    阿里云数据库 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云RDS数据库RDS实例间数据迁移-云淘科技

    本文介绍如何使用数据传输服务(Data Transmission Service,简称DTS),实现RDS实例间的数据迁移。DTS支持结构迁移、全量数据迁移以及增量数据迁移,同时使用这三种迁移类型可以实现在自建应用不停服的情况下,平滑地完成数据库的迁移。 前提条件 迁移场景中RDS实例的数据库类型必须满足如下条件: 源数据库 目标数据库 RDS MySQL(…

    2023年12月10日
  • 阿里云RDS数据库DescribeCharacterSetName – 查看数据库支持的字符集列表-云淘科技

    该接口用于查询RDS实例支持的字符集。 接口说明 适用引擎 RDS MySQL RDS PostgreSQL RDS SQL Server RDS MariaDB 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试调试授权信息当前API暂无授权信…

    阿里云数据库 2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。