PolarDB-X 1.0-最佳实践-如何高效扫描数据

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: PolarDB-X支持高效的数据扫描方式,并支持在全表扫描时使用聚合函数进行统计汇总。本文介绍如何高效扫描PolarDB-X数据。

常见的扫描场景

  • 没有分库分表:PolarDB-X会把原SQL传递到后端MySQL执行。这种情况下PolarDB-X支持任何聚合函数。
  • 非全表扫描:SQL经过PolarDB-X路由后,发送到单个MySQL库上执行。比如说拆分键在WHERE中是等于关系时,就会出现非全表扫描。此时同样可以支持任何聚合函数。
  • 全表扫描:目前支持的聚合函数有COUNT、MAX、MIN和SUM。另外在全表扫描时同样支持LIKE、ORDER BY 、LIMIT以及GROUP BY语法。
  • 并行的全表扫描:如果需要从所有库导出数据,可以通过SHOW指令查看表拓扑结构,针对分表并行处理。

通过HINT进行表遍历

  1. 执行SHOW TOPOLOGY FROM TABLE_NAME指令获取表拓扑结构。
mysql> SHOW TOPOLOGY FROM DRDS_USERS;
+------+-------------------+--------------+
| ID   | GROUP_NAME        | TABLE_NAME   |
+------+-------------------+--------------+
|    0 | DRDS_00_RDS       | DRDS_USERS   |
|    1 | DRDS_01_RDS       | DRDS_USERS   |
+------+-------------------+--------------+
2 rows in set (0.06 sec)
  1. 说明
  • 非分库分表的表默认存储在第0个分库。
  • 推荐每次扫描前执行SHOW TOPOLOGY FROM TABLE_NAME获取最新的表拓扑结构。
  1. 针对TOPOLOGY进行单表遍历。
  • 第0个分库运行当前SQL。
/!TDDL:node='DRDS_00_RDS'*/ SELECT * FROM DRDS_USERS;
  • 第1个分库运行当前SQL。
/!TDDL:node='DRDS_01_RDS'*/ SELECT * FROM DRDS_USERS;

并行扫描

PolarDB-X支持mysqldump指令导出数据。但如果想要更快地扫描数据,可以针对每个分表开启多个会话的方式并行加速扫描。


mysql> SHOW TOPOLOGY FROM LJLTEST;
+------+----------------+------------+
| ID   | GROUP_NAME     | TABLE_NAME |
+------+----------------+------------+
|    0 | TDDL5_00_GROUP | ljltest_00 |
|    1 | TDDL5_00_GROUP | ljltest_01 |
|    2 | TDDL5_00_GROUP | ljltest_02 |
|    3 | TDDL5_01_GROUP | ljltest_03 |
|    4 | TDDL5_01_GROUP | ljltest_04 |
|    5 | TDDL5_01_GROUP | ljltest_05 |
|    6 | TDDL5_02_GROUP | ljltest_06 |
|    7 | TDDL5_02_GROUP | ljltest_07 |
|    8 | TDDL5_02_GROUP | ljltest_08 |
|    9 | TDDL5_03_GROUP | ljltest_09 |
|   10 | TDDL5_03_GROUP | ljltest_10 |
|   11 | TDDL5_03_GROUP | ljltest_11 |
+------+----------------+------------+
12 rows in set (0.06 sec)

如上所示该表有四个分库,每个分库有三个分表。使用以下的SQL对TDDL5_00_GROUP库上的分表进行操作。


/!TDDL:node='TDDL5_00_GROUP'*/ select * from ljltest_00;


说明

  • HINT中的TDDL5_00_GROUP与SHOW TOPOLOGY指令结果中的GROUP_NAME列相对应。
  • SQL中的表名为分表名。
  • 此时可开启最多12个会话(分别对应12张分表)并行处理数据。
相关实践学习
跟我学:如何一键安装部署 PolarDB-X
《PolarDB-X 动手实践》系列第一期,体验如何一键安装部署 PolarDB-X。
相关文章
|
2月前
|
存储 关系型数据库 分布式数据库
PolarDB常见问题之PolarDB冷存数据到OSS之后恢复失败如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
2月前
|
SQL 关系型数据库 分布式数据库
在PolarDB中,行数评估是通过对表的统计数据、基数估计以及算子代价模型来进行估算的。
【2月更文挑战第14天】在PolarDB中,行数评估是通过对表的统计数据、基数估计以及算子代价模型来进行估算的。
91 1
|
4月前
|
关系型数据库 PostgreSQL
PostgreSQL排序字段不唯一导致分页查询结果出现重复数据
PostgreSQL排序字段不唯一导致分页查询结果出现重复数据
48 0
|
4月前
|
SQL canal 算法
PolarDB-X最佳实践:如何设计一张订单表
本文主要内容是如何使用全局索引与CO_HASH分区算法(CO_HASH),实现高效的多维度查询。
|
4天前
|
关系型数据库 分布式数据库 数据库
「活动预告」PolarDB走进青岛,邀请您一起畅游琴岛山海春韵,共话数据生态创新
由PolarDB开源社区、海信聚好看、PostgreSQL中文社区共同发起的《开源数据库沙龙》,将于青岛举办。
|
13天前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之在使用 DataWorks 数据集成同步 PostgreSQL 数据库中的 Geometry 类型数据如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
24 0
|
19天前
|
SQL 关系型数据库 API
从API获取数据并将其插入到PostgreSQL数据库:步骤解析
使用Python处理从API获取的数据并插入到PostgreSQL数据库:安装`psycopg2`,建立数据库连接,确保DataFrame与表结构匹配,然后使用`to_sql`方法将数据插入到已存在的表中。注意数据准备、权限设置、性能优化和安全处理。
|
26天前
|
SQL 关系型数据库 MySQL
关系型数据库插入数据的语句
使用SQL的`INSERT INTO`语句向关系型数据库的`students`表插入数据。例如,插入一个`id`为1,`name`为'张三',`age`为20的记录:`INSERT INTO students (id, name, age) VALUES (1, '张三', 20)。如果`id`自增,则可简化为`INSERT INTO students (name, age) VALUES ('张三', 20)`。
26 2
|
26天前
|
SQL 存储 Oracle
关系型数据库查询数据的语句
本文介绍了关系型数据库中的基本SQL查询语句,包括选择所有或特定列、带条件查询、排序、分组、过滤分组、表连接、限制记录数及子查询。SQL还支持窗口函数、存储过程等高级功能,是高效管理数据库的关键。建议深入学习SQL及相应数据库系统文档。
13 2
|
1月前
|
Cloud Native 关系型数据库 分布式数据库
数据之势丨云原生数据库,走向Serverless与AI驱动的一站式数据平台
在大模型席卷之下,历史的齿轮仍在转动,很多人开始思考,大模型能为数据库带来哪些改变。阿里云数据库产品事业部负责人李飞飞表示,数据库和智能化的结合是未来非常重要的发展方向,数据库的使用门槛将大幅降低。

相关产品

  • 云原生分布式数据库 PolarDB-X