mysql数据同步之后出现的问题

探讨了MySQL数据同步后因统计信息不准确导致的索引选择错误问题,通过analyze table更新统计信息解决了执行效率差异大的难题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql数据同步之后出现的问题: 两个mysql数据同步之后发现两个库执行同一条sql语句执行效率差几十倍

通过explain 查看执行计划发现两个实例走了不同的执行计划

查看了下索引都是一样的,只是mysql在选择上选择了不同的索引

源库使用ACT_IDX_HI_IDENT_LNK_PROCINST索引执行效率较好,目标库默认使用的是ACT_IDX_HI_IDENT_LNK_USER,执行效率上变慢很多,

强制目标库走ACT_IDX_HI_IDENT_LNK_PROCINST索引查看到的执行计划效率不如ACT_IDX_HI_IDENT_LNK_USER的,所以MySQL选择了使用ACT_IDX_HI_IDENT_LNK_USER

explain
SELECT
  RES.*
FROM
  ACT_HI_PROCINST RES
WHERE
  (
    EXISTS (
      SELECT
        LINK.USER_ID_
      FROM
        ACT_HI_IDENTITYLINK LINK force index(ACT_IDX_HI_IDENT_LNK_PROCINST)
      WHERE
        USER_ID_ = '****'
      AND LINK.PROC_INST_ID_ = RES.ID_
    )
  )
ORDER BY
  RES.START_TIME_ DESC
LIMIT 10 OFFSET 0

 

但是执行效率还是比较好。所以判断可能是MySQL统计信息不准确导致选择索引不对

在目标库上执行一下

analyze table ACT_HI_PROCINST

analyze table ACT_HI_IDENTITYLINK

这样再查看目标库的执行就和源库一样了

问题也迎刃而解

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值