开发者社区> 戴少> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

DRDS异构索引测试

简介: 一、   概述 对于DRDS的数据库的分表查询时SQL中的where条件尽量会带上分库分表键这样DRDS会将这个查询路由到具体的分库中以提高查询效率。如果SQL的where条件中没有分库分表键DRDS会进行一次全表扫描。
+关注继续查看

一、   概述

对于DRDS的数据库的分表,查询时SQL中的where条件尽量会带上分库分表键,这样DRDS会将这个查询路由到具体的分库中,以提高查询效率。如果SQL的where条件中没有分库分表键,DRDS会进行一次全表扫描。针对这种场景,DRDS提供了异构索引来解决这个问题。异构索引会将源表数据实时同步到按照不同字段分库分表的目标表中,以达到使用不同的分库分表键查询数据都不会走全表扫描的目的。

典型的异构索引应用场景是电商网站的订单表,在DRDS中创建结构相同分表键不同的两张表,分别按照买家ID和卖家ID来分库分表,底层将数据实时的从源表同步到目标表,不同用户登录查询时去对应表中查找,避免全表扫描。

本文档将对DRDS的异构索引功能进行创建及测试。

二、   创建异构索引

目前公有云中的异构索引处于内测阶段,只能通过提交工单,由后台人员协助完成创建的方式来使用。需要先在DRDS中建好源表和目标表。本次测试模拟合同信息表来进行测试,对合同表分别创建按照甲方和乙方两个字段分库分表的两张表,contracts_a为源表,contracts_b为目标表。

2.1. 在DRDS中创建源表

CREATE TABLE `contracts_a` (

  `cid` int(11) NOT NULL DEFAULT '0',

  `party_a` varchar(50) DEFAULT NULL,

  `party_b` varchar(50) DEFAULT NULL,

  PRIMARY KEY (`cid`),

  KEY `auto_shard_key_party_a` (`party_a`),

  KEY `idx_a` (`party_a`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 dbpartition by hash(`party_a`) tbpartition by hash(`party_a`) tbpartitions 2;

2.2. 在DRDS中创建目标表

CREATE TABLE `contracts_b` (

  `cid` int(11) NOT NULL DEFAULT '0',

  `party_a` varchar(50) DEFAULT NULL,

  `party_b` varchar(50) DEFAULT NULL,

  PRIMARY KEY (`cid`),

  KEY `auto_shard_key_party_b` (`party_b`),

  KEY `idx_b` (`party_b`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 dbpartition by hash(`party_b`) tbpartition by hash(`party_b`) tbpartitions 2;

2.3. 提交工单创建异构索引

阿里云控制台—工单—提交工单—DRDS—在描述中写明源表和目标表,要求开通异构索引即可。

三、异构索引功能测试

1.     查看两表数据量

{}f5352956f10518985ef03e4ce38f45d5bf2125ec


2.     在源表插入数据,查看目标表同步情况

5398108bb179e7a68d1a97852bffc906f71e3fc5

3.     在两表中分别查看不重复的甲方值(contracts_a表是按照甲方party_a分库分表,因此contracts_a表查询效率更快)

35aa628087d3c6353ea713b994d2853f534324e0

4.     在两表中分别查看不重复的乙方值(contracts_b表是按照乙方party_b分库分表,因此contracts_b表查询效率更快)

71ac46abf8bd4f7724516fc22c305a0eb1d6e953

5.     在两表分别查询某甲方的记录数

4de2ac5396ec9f95103afbec4baf6bf77f847008

6.     在两表分别查询某乙方的记录数

54cecd7431be6cb6db5a17f8fc9d777400fc4dfc

四、结论

如以上测试结果,异构索引会自动将源表数据同步到目标表,并通过提供多种分表键来避免全表扫描,以加快查询速度。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
停机测试:我停止了CRS 测试
<div style="font-family:'lucida Grande',Verdana,'Microsoft YaHei'; font-size:14px; line-height:23px"> <div>停机测试:</div> <div>问题 我停止了CRS 测试。</div> <div>[grid@m2 ~]$ crs_stat -t</div> <div>CRS-01
2237 0
sql server 树状结构表中,获取指定节点的所有父节点路径
CREATE PROCEDURE [dbo].[A_P_GetParentIds] ( @IdValue NVARCHAR(36) ,-- 子节点值 @tableName NVARCHAR(MAX) ,-- 表名 @ParentIdColumnName NVARCHAR(MAX) ,-- 父节点列名 @ChildIdColumnName
1211 0
sql server 树状结构表中,获取指定节点的所有父节点路径
CREATE PROCEDURE [dbo].[A_P_GetParentIds] ( @IdValue NVARCHAR(36) ,-- 子节点值 @tableName NVARCHAR(MAX) ,-- 表名 @ParentIdColumnName NVARCHAR(MAX) ,-- 父节点列名 @ChildIdColumnName
748 0
伏威谈淘宝网的高并发处理与压力测试
其实到现在为止距离淘宝双十一事件已经过去蛮多天了,但在整个技术圈里面大家还是津津乐道。我这次在采访之前在和一些网友做沟通的时候,他们也提出了非常多非常有意思的问题,包括一些高并发的,一些压力测试的等等,那我希望也代表这些网友和你做一个交流。那第一个问题就是,在那么大的访问量,淘宝的技术团队是如何做到一个高并发处理的? 对于高并发处理,简单来说呢,就是如何通过集群方式去并发处理用户的
1120 0
【物联网】物联网的结构
概念 物联网是新一代信息技术的重要组成部分,也是“信息化”时代的重要发展阶段。其英文名称是:“Internet of things(IoT)”。顾名思义,物联网就是物物相连的互联网。这有两层意思:其一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络;其二,其用户端延伸和扩展到了任何物品与物品之间,进行信息交换和通信,也就是物物相息。
1271 0
+关注
戴少
阿里云技术中台核心成员,擅长数加产品、分布式数据库、大型数据仓库建设等
文章
问答
文章排行榜
最热
最新
相关电子书
更多
分布式数据库DRDS全新升级
立即下载
阿里云总监课第五期第六节:研发挑战 - 研发过程中挑战
立即下载
阿里云创新赋能平台万创科技城站
立即下载