すべてのプロダクト
Search
ドキュメントセンター

PolarDB:WEEK

最終更新日:Mar 28, 2026

WEEK 関数を使用して、週の曜日ごとにテーブルシャードにデータを分散させます。各シャードは月曜日(シャード 0)から日曜日(シャード 6)までのいずれかの曜日にマップされます。

制限事項

  • パーティションキーは、DATE、DATETIME、または TIMESTAMP 型である必要があります。

  • WEEK はテーブルシャードにのみ適用されます。データベースシャードには使用できません。

  • 各データベースシャードには、週の曜日ごとに最大 7 つのテーブルシャードを設定できます。

  • PolarDB-X 1.0 のバージョン 5.1.28-1320920 以降が必要です。

仕組み

WEEK はパーティションキーから曜日の値を抽出し、それをテーブルシャードの添字として使用します。

曜日テーブルシャード添字
月曜日0
火曜日1
水曜日2
木曜日3
金曜日4
土曜日5
日曜日6

ユースケース

WEEK は、データアクセスパターンが週単位のサイクルに従うワークロードに適しています。アプリケーションが曜日単位でデータを生成・照会する場合、WEEK を使用すると、各物理テーブルシャードが特定の曜日と対応付けられるため、単一の曜日のデータに対するクエリは正確に 1 つのシャードにヒットします。

次の Data Definition Language (DDL) 文は、name 列に対して HASH を使用してデータベースシャードに、create_time 列に対して WEEK を使用して 7 つのテーブルシャードにデータをパーティションするテーブルを作成します。

CREATE TABLE test_week_tb (
    id int,
    name varchar(30) DEFAULT NULL,
    create_time datetime DEFAULT NULL,
    PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
dbpartition by HASH(name)
tbpartition by WEEK(create_time) tbpartitions 7;
  • dbpartition by HASH(name)name 列の値をハッシュ化して、行をデータベースシャードに分散させます。

  • tbpartition by WEEK(create_time) tbpartitions 7create_time から導出される曜日に基づき、行を 7 つのテーブルシャードに分散させます。