文档

手动分区

更新时间:

适用场景

PolarDB-X手动分区适合对业务性能有要求的应用,尤其是高并发高吞吐的核心应用。 因此,手动分区要求使用者需要对分布式数据库原理有所了解。但是,手动分区可以让用户选择最适合应用场景的维度进行水平切分,因此,手动分区最能发挥出分布式数据库的扩展性与高性能。

在实际应用的过程中,关于透明分布式的手动分区工作模式的适用场景,可以参考最佳实践

创建使用手动分区的数据库

PolarDB-X中,要使用透明分布式的手动分区工作模式,可以使用以下的建库 SQL(创建AUTO模式数据库):

CREATE DATABASE autodb1 MODE='auto'

手动分区的表类型及其使用方式

PolarDB-X中的手动分区,允许用户手动创建三种不同类型的逻辑表,它们分别是:单表、广播表与分区表。

这三种类型的表的物理表的拓扑各不一样,并分别适用于不同的场景,具体如下表所示:

逻辑表类型

物理表托扑

适用场景

读写负载分析

单表

一个单表对应一张物理表。

数据量较小、并发访问的小表。

读写集中在一个DN节点

广播表

广播表在每个DN节点都有一个镜像,它们之间的数据总是完全一样。

适合于读多写少、数据量不大的表,比如配置表。

读均衡:可以随机地分摊到不同DN节点

写放大:需要同时写所有 DN的镜像,保持一致。

分区表

分区表有多个分区并分布到多个DN节点,且每个分区对应一个物理表。

适用于高并发高吞吐的数据大的表。

读写压力能按分区列条件自动路由到不同DN节点,实现负载均衡。

方式一:手动指定所有表的分区方案

手动创建单表

语法

CREATE TABLE xxx (...)
SINGLE

示例

CREATE TABLE sin_tbl(
 id bigint not null auto_increment, 
 bid int, 
 name varchar(30),
 birthday datetime,
 primary key(id)
)
single ;

手动创建广播表

语法

CREATE TABLE xxx (...)
BROADCAST

示例

CREATE TABLE bro_tbl(
 id bigint not null auto_increment, 
 bid int, 
 name varchar(30),
 birthday datetime,
 primary key(id)
)
broadcast ;

手动创建分区表

创建分区表相关用法,请参考手动创建分区表

方式二:手动关闭默认自动分区

设置全局变量关闭默认的自动分区:

SET GLOBAL AUTO_PARTITION=false;

设置后,创建单表无须显式指定SINGLE关键字。

相关文档