全部產品
Search
文件中心

PolarDB:拆分函數概述

更新時間:Jul 06, 2024

PolarDB-X 1.0是一個支援既分庫又分表的資料庫服務。本文將介紹PolarDB-X 1.0拆分函數的相關資訊。

拆分方式

PolarDB-X 1.0中,一張邏輯表的拆分方式由拆分函數(包括分區數目與路由演算法)與拆分鍵(包括拆分鍵的 MySQL 資料類型)共同定義。只有當PolarDB-X 1.0使用了相同的拆分函數和拆分鍵時,才會被認為分庫與分表使用了相同的拆分方式。相同的拆分方式讓PolarDB-X 1.0可以根據拆分鍵的值定位到唯一的物理分庫和物理分表。當一張邏輯表的分庫拆分方式與分表拆分方式不一致時,若SQL查詢沒有同時帶上分庫條件與分表條件,則PolarDB-X 1.0在查詢過程會進行全分庫掃描或全分表掃描操作。

拆分函數對分庫、分表的支援情況

拆分函數說明是否支援用於分庫是否支援用於分表
HASH簡單模數
STR_HASH截取字串子串
UNI_HASH簡單模數
RIGHT_SHIFT數值向右移
RANGE_HASH雙拆分列雜湊
MM按月份雜湊
DD按日期雜湊
WEEK按周雜湊
MMDD按月日雜湊
YYYYMM按年月雜湊
YYYYWEEK按年周雜湊
YYYYDD按年日雜湊

拆分函數對全域二級索引的支援情況

  • PolarDB-X 1.0支援全域二級索引,從資料存放區的角度看,每個GSI對應一張用於儲存索引資料的邏輯表,稱為索引表。
  • PolarDB-X 1.0還支援建立GSI時指定索引表的拆分方式,並且對拆分函數的支援範圍與普通邏輯表相同。建立GSI的詳細文法,請參見使用全域二級索引

拆分函數對資料類型支援情況

拆分函數資料類型
INTBIGINTMEDIUMINTSMALLINTTINYINTVARCHARCHARDATEDATETIMETIMESTAMP其他類型
HASH××××
UNI_HASH××××
RANGE_HASH××××
RIGHT_SHIFT××××××
STR_HASH×××××××××
MM××××××××
DD××××××××
WEEK××××××××
MMDD××××××××
YYYYMM××××××××
YYYYWEEK××××××××
YYYYDD××××××××

拆分函數的文法說明

PolarDB-X 1.0相容MySQL的DDL表操作文法,並添加了drds_partition_options的分庫分表關鍵字,具體操作文法如下所示:

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    (create_definition,...)
    [table_options]
    [drds_partition_options]
    [partition_options]

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    [(create_definition,...)]
    [table_options]
    [drds_partition_options]
    [partition_options]
    select_statement

drds_partition_options:
    DBPARTITION BY
        { {HASH|YYYYMM|YYYYWEEK|YYYYDD|...}([column])}
        [TBPARTITION BY
            { {HASH|MM|DD|WEEK|MMDD|YYYYMM|YYYYWEEK|YYYYDD|...}(column)}
          [TBPARTITIONS num]
        ]