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张分表)并行处理数据。
相关文章
|
5月前
|
存储 关系型数据库 MySQL
亿级数据秒级响应:PolarDB MySQL HTAP实时分析方案设计与压测报告
PolarDB MySQL HTAP方案实现亿级数据秒级响应,支持高并发事务与实时分析。通过行列混存、智能路由与资源隔离,满足电商、金融等场景的实时报表、决策需求,降低架构复杂度与运维成本。
217 6
|
存储 人工智能 Cloud Native
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
在9月20日2024云栖大会上,阿里云智能集团副总裁,数据库产品事业部负责人,ACM、CCF、IEEE会士(Fellow)李飞飞发表《从数据到智能:Data+AI驱动的云原生数据库》主题演讲。他表示,数据是生成式AI的核心资产,大模型时代的数据管理系统需具备多模处理和实时分析能力。阿里云瑶池将数据+AI全面融合,构建一站式多模数据管理平台,以数据驱动决策与创新,为用户提供像“搭积木”一样易用、好用、高可用的使用体验。
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
|
人工智能 关系型数据库 分布式数据库
拥抱Data+AI|“全球第一”雅迪如何实现智能营销?DMS+PolarDB注入数据新活力
针对雅迪“云销通App”的需求与痛点,本文将介绍阿里云瑶池数据库DMS+PolarDB for AI提供的一站式Data+AI解决方案,助力销售人员高效用数,全面提升销售管理效率。
|
10月前
|
存储 关系型数据库 分布式数据库
PolarDB PG 版冷热数据分层功能介绍
本文介绍了云原生数据库PolarDB PG版的冷热数据分层存储功能,涵盖其原理、特性及最佳实践。冷热分层存储通过将冷数据归档至OSS(对象存储服务),实现低成本高效存储,同时保持SQL操作透明性和性能优化。支持多种分层模式,如表与索引分层、大字段独立归档等,并提供压缩和缓存机制以提升访问速度。此外,还介绍了如何通过DDL语句轻松转存数据至OSS,以及一系列最佳实践,包括自动冷热分层、无锁表转存和一键转存等功能。
632 36
|
10月前
|
NoSQL 关系型数据库 MySQL
阿里云PolarDB游戏场景最佳实践
阿里云PolarDB游戏场景最佳实践涵盖了数据库体系演进、行业优化、Redis解决方案、性能优化、备份还原及全球部署等内容。PolarDB通过共享存储、物理复制等技术提升读扩展和大容量支持,针对游戏行业的高IO需求进行优化,提供秒级备份与快速恢复能力。同时,PolarDB for Redis实现了一写多读架构,支持百TB级别的高性能存储,具备成本优势。该方案已在米哈游等大型游戏中广泛应用,确保了高并发下的稳定性和数据一致性,满足游戏行业的特殊需求。
499 36
|
9月前
|
SQL 关系型数据库 分布式数据库
PolarDB 开源基础教程系列 7.1 快速构建“海量逼真”数据
本文介绍了如何使用PostgreSQL和PolarDB快速生成“海量且逼真”的测试数据,以满足不同业务场景的需求。传统数据库测试依赖标准套件(如TPC-C、TPC-H),难以生成符合特定业务特征的复杂数据。通过自定义函数(如`gen_random_int`、`gen_random_string`等)、SRF函数(如`generate_series`)和pgbench工具,可以高效生成大规模、高仿真度的数据,并进行压力测试。文中还提供了多个示例代码展示.
259 7
|
9月前
|
人工智能 关系型数据库 分布式数据库
阿里云PolarDB重磅发布云原生与Data+AI新特性,打造智能时代数据引擎
阿里云PolarDB重磅发布云原生与Data+AI新特性,打造智能时代数据引擎
537 0
|
10月前
|
人工智能 关系型数据库 分布式数据库
PolarDB-PG AI最佳实践3 :PolarDB AI多模态相似性搜索最佳实践
本文介绍了如何利用PolarDB结合多模态大模型(如CLIP)实现数据库内的多模态数据分析和查询。通过POLAR_AI插件,可以直接在数据库中调用AI模型服务,无需移动数据或额外的工具,简化了多模态数据的处理流程。具体应用场景包括图像识别与分类、图像到文本检索和基于文本的图像检索。文章详细说明了技术实现、配置建议、实战步骤及多模态检索示例,展示了如何在PolarDB中创建模型、生成embedding并进行相似性检索

相关产品

  • 云原生分布式数据库 PolarDB-X
  • 下一篇
    oss云网关配置