产品概述
应用场景
产品架构
实例类型
兼容性说明
使用规范建议
CREATE TABLE `mall`.`orders` (`order_id` bigint NOT NULL,`user_id` bigint NOT NULL,`amount` decimal(10,2),`create_time` datetime DEFAULT CURRENT_TIMESTAMP,-- 主键必须包含分区键PRIMARY KEY (`order_id`))PARTITION BY HASH(`order_id`)PARTITIONS 64;
CREATE TABLE `user_center`.`user_profiles` (`user_uuid` varchar(36) NOT NULL,`nick_name` varchar(50),`register_time` datetime,PRIMARY KEY (`user_uuid`))PARTITION BY KEY(`user_uuid`)PARTITIONS 64;
CREATE TABLE `sys`.`audit_logs` (`log_id` bigint NOT NULL,`content` text,`log_time` datetime NOT NULL,PRIMARY KEY (`log_id`, `log_time`))PARTITION BY RANGE COLUMNS(`log_time`) (PARTITION p202301 VALUES LESS THAN ('2023-02-01'),PARTITION p202302 VALUES LESS THAN ('2023-03-01'),PARTITION p_future VALUES LESS THAN (MAXVALUE));
CREATE TABLE `crm`.`customers` (`cust_id` bigint NOT NULL,`city_id` int NOT NULL,`name` varchar(50),PRIMARY KEY (`cust_id`, `city_id`))PARTITION BY LIST(`city_id`) (PARTITION p_bj VALUES IN (10),PARTITION p_sh VALUES IN (20),PARTITION p_others VALUES IN (30));
-- 错误:分区键 user_id 没有包含在主键中CREATE TABLE `error_table` (`id` bigint NOT NULL PRIMARY KEY,`user_id` bigint NOT NULL) PARTITION BY HASH(`user_id`);
-- 正确:将 user_id 加入联合主键CREATE TABLE `correct_table` (`id` bigint NOT NULL,`user_id` bigint NOT NULL,PRIMARY KEY (`id`, `user_id`)) PARTITION BY HASH(`user_id`);
UPDATE 语句修改分区键的值。这可能会导致数据行在物理节点间迁移(Delete + Insert),代价较高。WHERE 子句中带上分区键(如 WHERE user_id = ?)。这样 TDSQL Boundless 可以直接路由到特定节点,性能极高。PARTITION BY HASH(col1 + col2) 或 KEY(col1, col2)。但这会增加复杂性,通常建议使用单一的高基数列作为分区键。文档反馈