Gunakan fungsi WEEK untuk mendistribusikan data ke shard tabel berdasarkan hari dalam seminggu. Setiap shard dipetakan ke satu hari, dari Senin (shard 0) hingga Minggu (shard 6).
Batasan
Kunci partisi harus bertipe DATE, DATETIME, atau TIMESTAMP.
WEEK hanya berlaku untuk shard tabel dan tidak dapat digunakan untuk shard database.
Setiap shard database dapat memiliki paling banyak 7 shard tabel, satu untuk setiap hari dalam seminggu.
Memerlukan PolarDB-X versi 1.0 5.1.28-1320920 atau yang lebih baru.
Cara kerja
WEEK mengekstraksi nilai hari dalam seminggu dari kunci partisi dan menggunakannya sebagai subskrip shard tabel.
| Day of week | Table shard subscript |
|---|---|
| Monday | 0 |
| Tuesday | 1 |
| Wednesday | 2 |
| Thursday | 3 |
| Friday | 4 |
| Saturday | 5 |
| Sunday | 6 |
Kasus penggunaan
WEEK cocok untuk beban kerja yang pola akses datanya mengikuti siklus mingguan. Jika aplikasi Anda menghasilkan dan mengakses data berdasarkan hari dalam seminggu, WEEK menyelaraskan setiap shard tabel fisik dengan hari tertentu, sehingga kueri terhadap data satu hari hanya mengenai satu shard.
Contoh
Pernyataan Data Definition Language (DDL) berikut membuat tabel yang mempartisi data ke shard database berdasarkan name menggunakan HASH, dan ke 7 shard tabel berdasarkan hari dalam seminggu menggunakan WEEK pada kolom create_time.
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)— mendistribusikan baris ke shard database dengan melakukan hashing pada kolomname.tbpartition by WEEK(create_time) tbpartitions 7— mendistribusikan baris ke 7 shard tabel berdasarkan hari dalam seminggu, yang diturunkan daricreate_time.