阿里云PolarDB MySQL版完全使用指南:从集群创建到SQL语法实战 一、认识PolarDB MySQL版云原生数据库的新选择阿里云PolarDB MySQL版是阿里云自研的新一代云原生数据库在计算存储分离架构下利用软硬件结合的优势为用户提供具备极致弹性、高性能、海量存储、安全可靠的数据库服务。与传统自建MySQL数据库或RDS for MySQL不同PolarDB采用计算与存储分离的架构将计算节点和存储节点解耦支持多副本共享存储。这种设计使其具备横向扩展能力可动态增减计算节点以应对负载变化。PolarDB MySQL版完全兼容MySQL 5.6、5.7和8.0版本支持绝大多数SQL语法、存储过程和触发器。这意味着如果您的业务目前运行在MySQL上迁移到PolarDB几乎无需修改应用代码可以平滑完成数据库的云原生化改造。1.1 产品系列与版本选择PolarDB MySQL版主要提供以下几种产品形态您可以根据业务需求灵活选择企业版集群版采用计算与存储分离的架构一个集群由一个主节点和最多15个只读节点组成。主节点处理读写请求只读节点仅处理读请求所有计算节点共享PolarStore中的同一份数据。该系列适用于大中型企业的生产数据库、互联网、物联网、零售电商、物流、游戏等行业的数据库以及对数据安全性要求非常高的金融、证券、保险行业的核心数据库。标准版同样采用计算与存储分离的架构数据库代理和计算节点分别在独立的ECS上进行部署共享存储层使用ESSD云盘或分布式存储PolarStore。标准版的多节点架构适用于有大量流量高峰读请求和数据智能分析需求的大中型企业的生产数据库场景。单节点架构则是个人用户测试、学习的最佳选择也可作为初创企业的入门级产品。Serverless后付费模式无需选择固定规格的资源集群根据系统业务负载的变化进行动态弹性扩缩容。适用于业务波动、不确定负载或不可预测的业务场景。在计费模式上PolarDB支持包年包月预付费、按量付费后付费和Serverless三种方式。包年包月适合业务需求长期稳定的场景购买周期越长折扣越大。按量付费根据实际使用时长计费适合业务需求灵活的场景。二、快速上手创建第一个PolarDB集群本节将带您从零开始完成PolarDB MySQL版集群的创建、配置和连接。整个流程包括创建集群、设置白名单、创建数据库账号、获取连接地址以及验证连接五个步骤。需要先登录阿里云控制台点击阿里云控制台2.1 创建集群登录PolarDB控制台后进入集群创建页面。在创建过程中您需要配置以下关键参数计费类型根据业务需求选择包年包月、按量付费或Serverless。地域选择集群所在地域。请确保PolarDB与需要连接的ECS位于同一地域否则它们的内网无法直接互通。数据库引擎选择MySQL 8.0.1或MySQL 8.0.2版本。快速购买页面仅支持MySQL 8.0版本如需其他版本请选择自定义购买。产品版本选择企业版或标准版。网络类型配置VPC网络和交换机。如果您已有符合规划的VPC例如已有ECS实例所在的VPC可以直接选择。节点规格首次测试建议选择最低配置以控制成本。完成配置后提交订单等待集群创建完成通常需要几分钟时间。2.2 设置白名单集群创建完成后需要配置IP白名单允许您的客户端IP访问数据库。在集群详情页的“数据安全性”或“白名单设置”中添加需要访问数据库的IP地址或IP段。为了提升安全性建议仅添加必要的IP地址避免开放全部IP0.0.0.0/0。2.3 创建数据库账号在集群管理页面的“账号管理”中创建一个高权限账号或普通账号。设置密码时建议包含大小写字母、数字和特殊字符以增强安全性。2.4 获取连接地址在集群详情页的“基本信息”中找到并复制集群的主地址集群地址和端口号。主地址格式类似于pc-xxxx.mysql.polardb.rds.aliyuncs.com:3306。PolarDB还提供了集群地址读写分离地址您连接该地址后即可对主节点和只读节点进行读写操作读写请求被自动转发到对应节点。2.5 连接并验证您可以使用任何标准的MySQL客户端工具连接PolarDB集群。以MySQL命令行工具为例mysql -h pc-xxxx.mysql.polardb.rds.aliyuncs.com -P 3306 -u 用户名 -p成功连接后执行一条简单的SQL查询来验证连通性SELECT VERSION();如果返回PolarDB的版本号则代表第一个PolarDB集群已成功创建并连接。除了命令行工具您还可以通过DMS数据管理服务连接PolarDB集群或使用各类编程语言的MySQL驱动如Python的pymysql、Java的JDBC、Node.js的mysql2等进行连接。三、PolarDB MySQL版SQL语法完全指南PolarDB MySQL版在SQL语法上与MySQL高度兼容。本节将系统梳理DDL、DML、DQL、DCL四大类SQL语句的使用方法并重点介绍PolarDB特有的扩展语法。3.1 DDL语句数据库与表结构定义DDLData Definition Language用于定义数据库结构包括CREATE、ALTER、DROP等操作。3.1.1 CREATE DATABASE创建数据库的语法与MySQL完全兼容。此外PolarDB支持通过DIST_DB参数指定数据库是否支持分库模式的多主分区表CREATE DATABASE [IF NOT EXISTS] db_name [DEFAULT] {CHARACTER SET [] charset_name | COLLATE [] collation_name | ENCRYPTION [] {Y | N} | DIST_DB [] {Y | N}}示例-- 创建普通数据库 CREATE DATABASE mydb; -- 创建支持多主分区表的数据库分库数默认为32 CREATE DATABASE mydb_dist DIST_DBY;3.1.2 CREATE TABLE创建普通表的语法与MySQL完全一致CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL, email VARCHAR(100), created_at DATETIME DEFAULT CURRENT_TIMESTAMP );多主分区表PolarDB特有对于标识为DIST_DBY的数据库仅能创建分库模式的多主分区表。使用关键字DBDISTRIBUTION来指定多主分区表的分布方式CREATE TABLE [IF NOT EXISTS] tbl_name ( create_definition,... ) [table_options] DBDISTRIBUTION BY { [LINEAR] HASH(expr) | [LINEAR] KEY [ALGORITHM{1 | 2}] (column_list) | RANGE{(expr) | COLUMNS(column_list)} | LIST{(expr) | COLUMNS(column_list)} }示例创建按用户ID哈希分布的多主分区表CREATE TABLE orders ( order_id BIGINT PRIMARY KEY, user_id INT NOT NULL, amount DECIMAL(10,2), order_date DATETIME ) DBDISTRIBUTION BY HASH(user_id);3.1.3 ALTER TABLE修改表结构的语法与MySQL完全兼容。例如为已有分区表新增分区ALTER TABLE table_name ADD PARTITION partition_definition;示例ALTER TABLE orders ADD PARTITION ( PARTITION p202601 VALUES LESS THAN (2026-02-01) );3.1.4 DROP TABLE与DROP DATABASEDROP TABLE [IF EXISTS] table_name; DROP DATABASE [IF EXISTS] db_name;3.1.5 EXPLAIN DDLPolarDB特有PolarDB MySQL版新增提供了EXPLAIN DDL功能您可以在执行DDL前对DDL语句进行EXPLAIN从而获取DDL操作的执行细节例如当前是否存在锁冲突、DDL操作是否需要重建表等EXPLAIN DDL ALTER TABLE users ADD COLUMN age INT;3.2 DML语句数据操作语言DMLData Manipulation Language用于数据的增删改操作PolarDB完全兼容MySQL的DML语法。3.2.1 INSERT-- 插入单条记录 INSERT INTO users (username, email) VALUES (zhangsan, zhangsanexample.com); -- 插入多条记录 INSERT INTO users (username, email) VALUES (lisi, lisiexample.com), (wangwu, wangwuexample.com); -- 插入并返回自增ID INSERT INTO users (username, email) VALUES (zhaoliu, zhaoliuexample.com); SELECT LAST_INSERT_ID();3.2.2 UPDATE-- 更新单表 UPDATE users SET email newemailexample.com WHERE id 1; -- 多表更新JOIN更新 UPDATE users u JOIN orders o ON u.id o.user_id SET u.status active WHERE o.amount 1000;3.2.3 DELETE-- 删除单条记录 DELETE FROM users WHERE id 1; -- 删除所有记录谨慎操作 DELETE FROM users; -- 使用TRUNCATE快速清空表DDL操作不可回滚 TRUNCATE TABLE users;3.3 DQL语句数据查询语言SELECT查询语法与MySQL完全兼容PolarDB在查询优化器层面进行了深度优化特别是在列存索引IMCI的加持下分析型查询性能大幅提升。3.3.1 基础查询-- 简单查询 SELECT id, username, email FROM users WHERE id 100 ORDER BY created_at DESC LIMIT 10; -- 聚合查询 SELECT DATE(order_date) as order_day, COUNT(*) as order_count, SUM(amount) as total_amount FROM orders WHERE order_date 2026-01-01 GROUP BY DATE(order_date) HAVING total_amount 10000 ORDER BY order_day DESC;3.3.2 JOIN查询SELECT u.username, o.order_id, o.amount, o.order_date FROM users u INNER JOIN orders o ON u.id o.user_id WHERE o.amount 500 ORDER BY o.order_date DESC;3.3.3 子查询与窗口函数-- 子查询 SELECT username, email FROM users WHERE id IN (SELECT DISTINCT user_id FROM orders WHERE amount 1000); -- 窗口函数MySQL 8.0支持 SELECT order_id, user_id, amount, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY order_date DESC) as rn, SUM(amount) OVER (PARTITION BY user_id) as user_total FROM orders;3.3.4 列存索引IMCI加速查询PolarDB MySQL版支持列存索引In-Memory Column Index简称IMCI将表的全部或部分列按照列式存储格式在只读节点上保存一份形成行列混合存储。在处理大规模数据集时列存索引可以大幅提升分析型查询的性能。创建列存索引在创建表时通过在COMMENT字段中添加COLUMNAR1来启用列存索引CREATE TABLE sales ( sale_id BIGINT PRIMARY KEY, product_id INT, category VARCHAR(50), sale_date DATE, amount DECIMAL(10,2), region VARCHAR(20) ) COMMENTCOLUMNAR1;对于已有表可以使用内置存储过程辅助创建列存索引。启用列存索引后针对大表的聚合查询如SUM、COUNT、GROUP BY等将自动受益于列式存储的高效扫描能力。3.4 DCL语句数据控制语言DCLData Control Language用于权限管理与MySQL完全兼容。-- 创建用户 CREATE USER app_user% IDENTIFIED BY strong_password; -- 授予权限 GRANT SELECT, INSERT, UPDATE ON mydb.* TO app_user%; -- 撤销权限 REVOKE DELETE ON mydb.* FROM app_user%; -- 刷新权限 FLUSH PRIVILEGES;四、读写分离与集群地址配置PolarDB的企业版集群架构天然支持读写分离。通过集群地址读写分离地址应用程序只需连接一个地址写请求自动发往主节点读请求自动分发到只读节点。4.1 创建自定义集群地址在PolarDB控制台的集群详情页点击“创建自定义地址”。配置参数包括读写模式可选择“只读”或“可读可写自动读写分离”。服务节点选择哪些节点参与该地址的读请求处理。负载均衡策略只读模式下可选择基于连接数或基于活跃请求数。事务拆分开启后可将事务中的读请求拆分到只读节点。一致性级别可读可写模式下支持最终一致性弱、会话一致性中和全局一致性强。4.2 一致性级别说明PolarDB支持多种一致性级别以满足不同场景的需求最终一致性弱通过只读地址可以查看到当前只读节点上最新数据。如果在主节点和只读节点间数据同步有延迟可能读到旧数据。适合对读延迟不敏感的场景。会话一致性中保证同一会话内读到的数据与自己之前写入的数据保持一致。全局一致性强通过只读地址可以查看到主节点上提交的最新数据满足全局数据查询一致性。如果主备延迟过大查询会等待。适合对数据一致性要求极高的金融、交易类场景。五、高级特性与最佳实践5.1 多主分区表LimitlessPolarDB MySQL版的多主分区表是一种全新的云原生数据库支持自动水平拆分、混合共享存储以及shared nothing架构。它能够根据预设的拆分规则将数据自动分散到多个数据库集群中从而使每个节点均具备读写能力实现真正的分布式处理能力。通过水平拆分PolarDB能够有效地实现数据库的横向扩展线性提升整体的并发吞吐能力。使用多主分区表的前提条件包括PolarDB MySQL版产品系列为多主集群Limitless且内核版本为8.0版本。5.2 参数优化与性能调优PolarDB提供了丰富的数据库参数供用户调整以优化性能、增强安全性或满足特定功能需求。关键参数调优建议连接池管理建议使用会话级连接池最大连接数设置为PolarDB实例连接数的80%空闲连接回收时间设置为300秒。锁系统优化将锁系统分区数量调整为CPU核心数减少高并发场景下的锁竞争提升并发性能。列存索引并行度列存索引的并行度决定了一条SQL语句可以使用的CPU资源建议根据集群规格调整不超过计算节点的CPU核数。5.3 监控与告警PolarDB对接阿里云CloudMonitor云监控服务提供监控指标与告警配置功能。您可以在PolarDB控制台的“性能监控”页面查看集群的CPU使用率、内存使用率、连接数、QPS、TPS等核心指标。针对关键指标设置告警规则例如当CPU使用率连续5分钟超过80%时触发告警。5.4 备份与恢复PolarDB支持全量备份快照和增量备份binlog您可以通过控制台的“备份恢复”页面进行管理。恢复方式包括按备份集快照恢复从指定的备份集恢复数据到新集群。按时间点恢复恢复到过去任意时间点的数据状态。恢复操作会在克隆实例页面创建新集群原集群不受影响。六、常见问题解答问题1PolarDB MySQL版与自建MySQL有什么区别答核心区别在于架构设计。PolarDB采用计算存储分离的云原生架构计算节点与存储节点解耦支持多副本共享存储。这种设计使其具备弹性扩展能力可以动态增减计算节点同时存储容量最高可达上百TB。而自建MySQL受限于单机硬件扩展性有限。问题2PolarDB是否完全兼容MySQL的SQL语法答是的PolarDB MySQL版完全兼容MySQL 5.6、5.7和8.0版本支持绝大多数SQL语法、存储过程和触发器。从MySQL迁移到PolarDB通常无需修改应用代码。问题3如何选择PolarDB的集群规格答选择规格需要综合考虑业务并发量、数据量大小和预算。测试或学习场景建议选择标准版单节点最低配置。生产环境建议选择企业版集群版根据读写比例配置合适数量的只读节点。如果业务负载波动较大可以考虑Serverless模式。问题4PolarDB的读写分离是如何实现的答PolarDB提供了集群地址读写分离地址应用程序连接该地址后写请求自动发往主节点读请求自动分发到只读节点。您可以在控制台创建自定义集群地址配置负载均衡策略、事务拆分和一致性级别。问题5如何降低PolarDB的使用成本答可以从以下几个方面控制成本选择标准版而非企业版如果功能满足需求对于测试环境使用后及时释放资源包年包月模式下购买周期越长折扣越大合理设置只读节点数量按需扩展。问题6PolarDB支持哪些连接方式答PolarDB支持多种连接方式MySQL命令行工具、DMS数据管理服务、各类编程语言的MySQL驱动JDBC、pydantic、Node.js mysql2等、阿里云CLI以及SDK和API。