Topik ini menjelaskan fungsi partisi yang didukung oleh database PolarDB-X dalam mode partisi otomatis.
Istilah
kunci partisi: Kunci partisi mencakup satu atau lebih kolom yang digunakan oleh PolarDB-X untuk mempartisi tabel secara horizontal.
kolom kunci partisi: Kolom kunci partisi adalah kolom yang digunakan oleh PolarDB-X untuk membagi data dalam tabel menjadi partisi. Kunci partisi terdiri dari satu atau lebih kolom kunci partisi.
kunci partisi vektor: Kunci partisi vektor mencakup satu atau lebih kolom kunci partisi, seperti (c1,c2,c3) dalam
Partition by Hash(c1,c2,c3).kunci partisi kolom tunggal: Kunci partisi kolom tunggal hanya mencakup satu kolom kunci partisi, seperti c1 dalam
Partition by Hash(c1).fungsi partisi: Fungsi partisi menggunakan kolom kunci partisi sebagai parameter input dan mengembalikan hasil yang menentukan ke partisi mana data diarahkan oleh PolarDB-X. Contoh:
Partition by Hash(To_Days(c1)).monotonicity: Monotonicity dari suatu fungsi partisi menggambarkan tren perubahan nilai yang dikembalikan oleh fungsi func(x) ketika nilai variabel independen x meningkat atau menurun. Hanya fungsi partisi dengan monotonicity Ketat atau Non-ketat yang mendukung pemangkasan partisi untuk kueri rentang.
Monotonicity Ketat: Jika nilai variabel independen x lebih besar dari nilai variabel independen y, nilai yang dikembalikan oleh fungsi func(x) lebih besar dari nilai yang dikembalikan oleh fungsi func(y). Jika nilai variabel independen x lebih kecil dari nilai variabel independen y, nilai yang dikembalikan oleh fungsi func(x) lebih kecil dari nilai yang dikembalikan oleh fungsi func(y).
Monotonicity Non-ketat: Jika nilai variabel independen x lebih besar dari nilai variabel independen y, nilai yang dikembalikan oleh fungsi func(x) lebih besar atau sama dengan nilai yang dikembalikan oleh fungsi func(y). Jika nilai variabel independen x lebih kecil dari nilai variabel independen y, nilai yang dikembalikan oleh fungsi func(x) lebih kecil atau sama dengan nilai yang dikembalikan oleh fungsi func(y).
Tidak ada monotonicity: Jika nilai variabel independen x lebih besar dari nilai variabel independen y, nilai yang dikembalikan oleh fungsi func(x) mungkin tidak lebih besar atau sama dengan nilai yang dikembalikan oleh fungsi func(y).
Batasan
Tabel berikut menjelaskan fungsi partisi yang didukung oleh PolarDB-X, versi PolarDB-X yang mendukung fungsi partisi, monotonicity dari fungsi partisi, serta tipe data kolom kunci partisi yang didukung oleh fungsi partisi.
Fungsi Partisi | Deskripsi | Versi yang Didukung | Monotonicity | Tipe Data Kolom Kunci Partisi yang Didukung | ||
Tipe Integer1 | Tipe Tanggal dan Waktu2 | Tipe String3 | ||||
| Mengembalikan tahun dari tanggal input. Untuk informasi lebih lanjut, lihat YEAR(date) dalam dokumentasi MySQL. | 5.4.13 dan setelahnya | Monotonicity Non-ketat | ❌ | ✅ | ❌ |
| Mengembalikan bulan dari tanggal input. Untuk informasi lebih lanjut, lihat MONTH(date) dalam dokumentasi MySQL. | 5.4.13 dan setelahnya | Tidak ada monotonicity | ❌ | ✅ | ❌ |
| Mengembalikan jumlah hari dari 1 Januari, 0000 hingga tanggal input. Untuk informasi lebih lanjut, lihat TO_DAYS(date) dalam dokumentasi MySQL. | 5.4.13 dan setelahnya | Monotonicity Non-ketat | ❌ | ✅ | ❌ |
| Mengembalikan jumlah bulan dari 1 Januari, 0000 hingga tanggal input. Fungsi ini merupakan fungsi spesifik PolarDB-X. | 5.4.16-16717637 dan setelahnya | Monotonicity Non-ketat | ❌ | ✅ | ❌ |
| Mengembalikan jumlah minggu dari 1 Januari, 0000 hingga tanggal input. Fungsi ini merupakan fungsi spesifik PolarDB-X. | 5.4.16-16717637 dan setelahnya | Monotonicity Non-ketat | ❌ | ✅ | ❌ |
| Mengembalikan jumlah detik dari 1 Januari, 0000, 00:00:00 hingga waktu input. Untuk informasi lebih lanjut, lihat TO_SECONDS(expr) dalam dokumentasi MySQL. | 5.4.13 dan setelahnya | Monotonicity Non-ketat | ❌ | ✅ | ❌ |
| Mengembalikan jumlah detik dari 1 Januari, 1970, 00:00:00 UTC hingga waktu input. Untuk informasi lebih lanjut, lihat UNIX_TIMESTAMP([date]) dalam dokumentasi MySQL. | 5.4.13 dan setelahnya | Monotonicity Non-ketat | ❌ | ✅ | ❌ |
| Mengembalikan nomor minggu dari tanggal input. Sebagai contoh, 1 dikembalikan untuk Minggu, 2 dikembalikan untuk Senin, dan 7 dikembalikan untuk Sabtu. Untuk informasi lebih lanjut, lihat DAYOFWEEK(date) dalam dokumentasi MySQL. | 5.4.16-16717637 dan setelahnya | Tidak ada monotonicity | ❌ | ✅ | ❌ |
| Mengembalikan hari dari tanggal input dalam bulan saat ini. Nilai valid: 1 hingga 31. Untuk informasi lebih lanjut, lihat DAYOFMONTH(date) dalam dokumentasi MySQL. | 5.4.16-16717637 dan setelahnya | Tidak ada monotonicity | ❌ | ✅ | ❌ |
| Mengembalikan hari dari tanggal input dalam tahun saat ini. Nilai valid: 1 hingga 366. Untuk informasi lebih lanjut, lihat DAYOFYEAR(date) dalam dokumentasi MySQL. | 5.4.16-16717637 dan setelahnya | Tidak ada monotonicity | ❌ | ✅ | ❌ |
SUBSTR/SUBSTRING | Mengembalikan substring dari string input. Untuk informasi lebih lanjut, lihat SUBSTR() and SUBSTRING() dalam dokumentasi MySQL. | 5.4.16-16717637 dan setelahnya | Tidak ada monotonicity | ❌ | ❌ | ✅ |
| Mengembalikan substring paling kanan sepanjang n karakter dari string input. Untuk informasi lebih lanjut, lihat RIGHT(str,len) dalam dokumentasi MySQL. | 5.4.18-17034692 dan setelahnya | Tidak ada monotonicity | ❌ | ❌ | ✅ |
| Mengembalikan substring paling kiri sepanjang n karakter dari string input. Untuk informasi lebih lanjut, lihat LEFT(str,len) dalam dokumentasi MySQL. | 5.4.18-17034692 dan setelahnya | Tidak ada monotonicity | ❌ | ❌ | ✅ |
1. Tipe integer: BIGINT, BIGINT UNSIGNED, INT, INT UNSIGNED, MEDIUMINT, MEDIUMINT UNSIGNED, SMALLINT, SMALLINT UNSIGNED, TINYINT, dan TINYINT UNSIGNED
2. Tipe tanggal dan waktu: DATETIME, DATE, dan TIMESTAMP
3. Tipe string: CHAR dan VARCHAR
Tabel berikut menjelaskan kebijakan partisi yang dapat diterapkan pada fungsi partisi yang didukung oleh PolarDB-X.
Fungsi Partisi | Pembagian Kunci | Pembagian HASH | Pembagian RANGE | Pembagian RANGE COLUMNS | Pembagian LIST | Pembagian LIST COLUMNS | Pembagian CO_HASH | ||
Kunci partisi kolom tunggal | Kunci partisi vektor | Kunci partisi kolom tunggal | Kunci partisi vektor | ||||||
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
TO_SECOND | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
SUBSTR/SUBSTRING | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ |
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ |
| ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ |