分区函数

本文介绍了AUTO模式数据库支持的分区函数。

名词解析

  • 分区键:分区表中用于进行水平切分的一个列或多个列。

  • 分区列:水平切分后,参与分区路由及计算的列,它通常是分区键的一部分,一个分区键可以含有一个或多个分区列。

  • 向量分区键:由一个或多个分区列组成的分区键,例如Partition by Hash(c1,c2,c3)

  • 单列分区键:只含一个分区列的分区键,例如Partition by Hash(c1)

  • 分区函数:将分区列作为一个函数的输入参数,并将该函数的输出结果作为原始值参与路由计算,该函数被称为分区函数。例如Partition by Hash(To_Days(c1))

  • 分区函数单调性:单调性描述了随着自变量x(函数的输入)增加或减少时函数的输出值func(x)变化趋势。单调性又可细分以下3种,但其中的具有严格单调性与非严格单调性的分区函数才能支持范围查询的分区裁剪

    • 严格单调性:对于x>y,func(x)>func(y),反之亦然;

    • 非严格单调性:对于x>y,func(x)>=func(y),反之亦然;

    • 没有单调性:对于x>y,不一定会出现func(x)>=func(y)。

使用限制

下表列出了PolarDB-X支持的分区函数、支持的版本、函数单调性以及分区函数支持的数据类型。

分区函数

描述

支持版本

分区函数单调性

分区列的数据类型支持情况

整数类型

时间类型

字符串类型

YEAR

返回输入值的年份,详情请参见MySQL YEAR

5.4.13及以上。

非严格单调

MONTH

返回输入值的月份,详情请参见MySQL MONTH

5.4.13及以上。

没有单调性

TO_DAYS

返回自公元元年(0000-01-01)至输入日期之间的天数,详情请参见MySQL TO_DAYS

5.4.13及以上。

非严格单调

TO_MONTHS

返回公元元年(0000-01-01)至输入日期之间的月数。该函数为PolarDB-X特有函数。

5.4.16-16717637版本及以上。

非严格单调

TO_WEEKS

返回公元元年(0000-01-01)至输入日期之间的星期数。该函数为PolarDB-X特有函数。

5.4.16-16717637版本及以上。

非严格单调

TO_SECONDS

返回公元元年0时刻至输入时间之间的秒数,详情请参见MySQL TO_SECONDS

5.4.13及以上。

非严格单调

UNIX_TIMESTAMP

返回'1970-01-01 00:00:00' UTC至输入时间之间的秒数,详情请参见MySQL UNIX_TIMESTAMP

5.4.13及以上。

非严格单调

DAYOFWEEK

返回输入日期的星期编号,(1 = Sunday, 2 = Monday, …, 7 = Saturday),详情请参见MySQL DAYOFWEEK

5.4.16-16717637版本及以上。

没有单调性

DAYOFMONTH

返回输入日期是当月的第几天(取值范围为1至31),详情请参见MySQL DAYOFMONTH

5.4.16-16717637版本及以上。

没有单调性

DAYOFYEAR

返回输入日期是当年的第几天(取值范围为1至366),详情请参见MySQL DAYOFYEAR

5.4.16-16717637版本及以上。

没有单调性

SUBSTR/SUBSTRING

返回输入字符串的一个子串,详情请参见MySQL SUBSTR(注:SUBSTR/SUBSTRING)。

5.4.16-16717637版本及以上。

没有单调性

RIGHT

输入一个字符串和想截取的长度n,返回该字符串最右端长度为n的子串,详情请参见MySQL RIGHT

5.4.18-17034692版本及以上。

没有单调性

LEFT

输入一个字符串和想截取的长度n,返回该字符串最左端长度为n的子串,详情请参见MySQL LEFT

5.4.18-17034692版本及以上。

没有单调性

整数类型:BIGINT/BIGINT UNSINGEDINT/INT/INT UNSINGED/MEDIUMINT/MEDIUMINT UNSINGED/SMALLINT/SMALLINT UNSINGED/TINYINT/TINYINT UNSINGED

时间类型:DATETIME/DATE/TIMESTAMP

字符串类型:CHAR/VARCHR

下表列出了PolarDB-X的各种分区函数允许在哪些分区策略中使用。

分区函数

KEY分区

HASH分区

RANGE分区

RANGE COLUMNS分区

LIST分区

LIST COLUMNS分区

COHASH分区

单列分区键

向量分区键

单列分区键

向量分区键

YEAR

TO_DAYS

TO_MONTHS

TO_WEEKS

TO_SECOND

UNIX_TIMESTAMP

MONTH

DAYOFWEEK

DAYOFMONTH

DAYOFYEAR

SUBSTR/SUBSTRING

RIGHT

LEFT