DBLE缓存分析

本文深入分析了DBLE分布式数据库中间件在主键缓存方面的问题,通过实例展示了主键更新后查询异常的原因,揭示了DBLE主键缓存的工作原理、限制及其对查询路由的影响。并介绍了DBLE的三种缓存类型,帮助读者理解如何合理利用缓存提升系统性能。
摘要由CSDN通过智能技术生成

目录

一、导读

二、现象描述

三、原因排查

四、DBLE缓存介绍

五、总结


  • 一、导读

DBLE是一款应用较为广泛的开源分布式数据库中间件产品。本文主要结合实际生产中的案例,介绍DBLE缓存机制、缓存使用限制、以及缓存种类。下面将通过使用DBLE进行主键更新查询操作,返回结果异常的实际案例来进行演示分析。

  • 二、现象描述

前期开发同学反馈在进行数据修正时,查询丢失部分数据。A表进行了数据的分片,分片方式为hash,分片节点数量为2。首先连接DBLE在表A中插入主键值1和主键值2两条数据,使其分布在不同分片上。更新主键值1为2(两条数据不在同一分片上不会产生主键冲突),根据主键值2进行查询,只返回一条数据,丢失更新后数据。现将问题复现如下。

2.1环境及版本

DBLE版本:2.19.11.99

MySQL版本:5.7.28

涉及分片表:test

主键为mobile_no

分片字段为user_code

分片拆分规则:hash

节点数量:2

2.2表结构示例

create table test(

       mobile_no varchar(32) not null,

       user_code varchar(32) not null,

       PRIMARY KEY (mobile_no),

       INDEX idx_usercode(user_code)

) ENGINE=InnoDB CHARACTER SET =utf8mb4;

2.3查询结果异常模拟

  1. 通过DBLE插入两条数据使其分别分布在node1、node2分片上。
mysql> insert into test values(13600000001,0);

Query OK, 1 row affected (0.00 sec)

mysql> insert into test values(13800000002,1);

Query OK, 1 row affected (0.00 sec)

2)根据主键查询(缓存主键信息)

mysql> select * from test where mobile_no=13600000001;

+-------------+-----------+

| mobile_no   | user_code |

+-------------+-----------+

| 13600000001 | 0         |

+-------------+-----------+

1 row in set (0.00 sec)



mysql> select * from test where mobile_no=13800000002;

+-------------+-----------+

| mobile_no   | user_code |

+-------------+-----------+

| 13800000002 | 1         |

+-------------+-----------+

1 row in set (0.00 sec)

3)更新主键并查询(因所处不同分片,主键不产生冲突),执行计划查询分发到所有节点,查询结果符合预期。

mysql> update test se
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值