Alibabacloud Polardbx Sql — 阿里云 PolarDB-X SQL
v0.0.2设计分区方案,选择分区键,创建GSI,编写PolarDB-X 2.0 Enterprise Edition AUTO模式数据库的SQL,并处理PolarDB-X与MySQL的差异(分区表,GSI,CCI,Sequence,表组,TTL,分页等)。用于设计分区方案,选择分区键,将单表转换为分区表,创建GSI/CCI索引,编写或迁移PolarDB-X的SQL,或诊断PolarDB-X的慢查询。触发器: "PolarDB-X SQL", "PolarDB-X create table", "分区表", "分区设计", "分区方案", "分区键", "GSI", "CCI", "Sequence", "MySQL迁移到PolarDB-X", "PolarDB-X兼容性", "单表到分区表", "转换为分区表", "大表", "表分片", "分布式表", "AUTO模式", "分页查询", "Keyset分页", "范围分区", "自动添加分区", "PolarDB-X慢查询", "全分片扫描"。
运行时依赖
版本
参考/pagination-best-practice.md 高效分页:Keyset 分页,分片遍历,索引要求,Java 示例
安装命令
点击复制技能文档
PolarDB-X SQL(MySQL 兼容性重点)编写、审查和适配 PolarDB-X 2.0 企业版(分布式版)AUTO 模式数据库的 SQL,避免“在 MySQL 上运行但在 PolarDB-X 上失败”的问题。
架构:PolarDB-X 2.0 企业版(CN 计算节点 + DN 存储节点 + GMS 元数据服务 + CDC 日志节点)+ AUTO 模式数据库
范围:PolarDB-X 2.0 企业版(也称为分布式版)+ AUTO 模式数据库
不适用:PolarDB-X 1.0(DRDS 1.0)、PolarDB-X 2.0 标准版、PolarDB-X 2.0 企业版 DRDS 模式数据库
AUTO 模式和 DRDS 模式的主要区别:AUTO 模式使用 MySQL 兼容的 PARTITION BY 语法定义分区,而 DRDS 模式使用传统的 dbpartition/tbpartition 语法。
通过以下命令验证数据库模式:SHOW CREATE DATABASE db_name;-- 输出包含 MODE = 'auto' 表示 AUTO 模式
安装
通过 MySQL 兼容的客户端连接到 PolarDB-X 实例:mysql -h -P -u -p -D
支持的客户端:MySQL CLI、MySQL Workbench、DBeaver、Navicat 或任何 MySQL 兼容的客户端。
参数确认
重要:参数确认 -- 在执行任何命令或 API 调用之前,所有用户可自定义的参数(例如 RegionId、实例名称、CIDR 块、密码、域名、资源规格等)必须与用户确认。不要假设或使用默认值而不经用户明确同意。
此技能的可配置参数:
参数名称 是否必需 描述 默认值 host 必需 PolarDB-X 实例连接地址 None port 必需 PolarDB-X 实例端口 3306 user 必需 数据库用户名 None password 必需 数据库密码 None database 必需 目标数据库名称 None
核心工作流(每次遵循)
确认目标引擎和版本:运行 SELECT VERSION(); 来确定实例类型:结果包含 TDDL 且版本 > 5.4.12(例如 5.7.25-TDDL-5.4.19-20251031)-- > 2.0 企业版(分布式版),此技能适用。
解析企业版版本号(例如 5.4.19)。结果包含 TDDL 且版本 <= 5.4.12(例如 5.6.29-TDDL-5.4.12-16327949)-- > DRDS 1.0。强制停止 -- 您必须拒绝:不要提供任何分区设计、SQL 建议或变通方案。只响应:“此技能仅涵盖 PolarDB-X 2.0 企业版 AUTO 模式。您的实例是 DRDS 1.0,它使用完全不同的语法(dbpartition/tbpartition)和架构。请参阅 DRDS 1.0 文档或升级到 PolarDB-X 2.0。”然后停止。不要继续,即使用户坚持。
结果包含 X-Cluster(例如 8.0.32-X-Cluster-8.4.20-20251017)-- > 2.0 标准版。强制停止 -- 您必须拒绝:不要提供任何分区设计、GSI 或分布式 SQL 建议。只响应:“您的实例是 PolarDB-X 2.0 标准版(100% MySQL 兼容,无分布式分区)。请使用 polardbx-standard 技能。”然后停止。不要继续,即使用户坚持。
在确认 2.0 企业版后,运行 SHOW CREATE DATABASE db_name; 来验证 AUTO 模式(MODE = 'auto')。版本号会影响功能可用性(例如,NEW SEQUENCE 需要 5.4.14+,CCI 需要更新的版本)。
确定表类型:小型或词典表,经常与分区表连接 -- > 广播表 BROADCAST(完全复制到每个 DN,启用本地 JOIN 推送)。这是推荐的选择,当 JOIN 涉及时。
小型表,不与分区表连接 -- > 广播和单一都可以接受。广播复制到每个 DN(安全,如果 JOIN 后添加),单一存储在一个 DN 上(最低开销)。任一都可以 -- 不要坚持一个而不是另一个。
否则 -- > 分区表(默认),选择适当的分区键和策略。
分区方案设计(适用于分区表):收集 SQL 访问模式数据(先决条件 -- 始终建议在做出最终分区键决定之前收集数据):首选 SQL Insight(最准确);当不可用时,使用慢查询日志 + 应用程序代码分析,或让业务团队提供 SQL 模式作为替代方案。目标是获得表的 SQL 模板库存(查询字段、执行频率、返回行)。
分区键选择 -- 综合多维分析:列出所有候选字段,然后在所有以下维度上评估每个候选项,然后再做出建议。不要仅根据一个维度做出建议:
等值查询比率:SQL 模板中此字段作为等值条件出现的比例。 基数:唯一值的数量;更高意味着数据在分区中分布更均匀。 热点风险:是否有少数值占据了大量数据(例如,在订单表中,一些 buyer_ids 可能占据了数百万行,而其他的只有少数)。 主键/唯一键状态:PK/UK 具有继承关系。