Topik ini menjelaskan cara menetapkan strategi pembuatan dan penghapusan partisi.
Strategi pembuatan partisi
Membuat partisi untuk tabel dalam grup tabel dapat gagal atau merusak status penyeimbangan beban. Berhati-hatilah saat Anda memutuskan untuk mengonfigurasi strategi pembuatan partisi untuk tabel semacam itu.
Membuat partisi untuk tabel dalam grup tabel dapat membatalkan validitas grup tabel, karena tabel dalam grup tabel yang sama harus memiliki jumlah partisi yang sama.
Strategi pembuatan partisi kustom
Anda dapat membuat strategi pembuatan partisi kustom untuk menghasilkan batas atas partisi dengan menggunakan ekspresi SQL. Lakukan langkah-langkah berikut:
Gunakan ekspresi SQL untuk mendapatkan waktu referensi, yaitu waktu mulai untuk pembuatan partisi.
CatatanUntuk menggunakan waktu ketika rencana partisi dijalankan sebagai waktu mulai, gunakan fungsi
now()atauSYSDATE.fungsi.Tetapkan interval waktu untuk menghasilkan partisi: Rencana partisi akan menghasilkan partisi berdasarkan interval waktu yang ditentukan. Setelah Anda memasukkan interval waktu di kolom Interval , OceanBase Developer Center (ODC) menggunakan ekspresi
${INTERVAL}untuk mereferensikan interval waktu ini dan menambahkannya ke ekspresi SQL yang dihasilkan pada Langkah 1.Hasilkan ekspresi partisi dengan tipe data yang sama dengan kunci partisi: Konversikan ekspresi SQL tipe waktu yang dihasilkan setelah Langkah 1 dan Langkah 2 selesai menjadi tipe aktual dari kunci partisi. Jika kunci partisi dan ekspresi SQL memiliki tipe yang sama, lewati langkah ini.
Anda dapat mereferensikan variabel dalam strategi pembuatan partisi kustom. Tabel berikut mencantumkan ekspresi yang didukung.
Ekspresi | Deskripsi | Contoh |
INTERVAL | Interval waktu untuk menghasilkan partisi. ODC akan mengganti variabel ini dengan nilai kolom Interval di kolom Rule di bagian Creation Rule . |
|
Secara umum, jika Anda memilih untuk membuat strategi partisi kustom, partisi akan dihasilkan berdasarkan tipe waktu untuk kunci partisi yang bukan bertipe waktu. Tabel referensi cepat berikut dapat membantu Anda menulis ekspresi SQL dengan benar.
Ekspresi untuk menghasilkan batas atas partisi dalam mode MySQL
Ekspresi partisi contoh | Deskripsi | Interval waktu | Ekspresi SQL untuk menghitung batas atas partisi |
| Hasilkan per tahun | 1 |
|
| Hasilkan per tahun | 1 |
|
Hasilkan per bulan | 1 |
| |
| Hasilkan per tahun | 1 |
|
Hasilkan per bulan | 1 |
| |
| Hasilkan per tahun | 1 |
|
Hasilkan per bulan | 1 |
| |
| Hasilkan per tahun | 1 |
|
Hasilkan per bulan | 1 |
| |
Hasilkan per hari | 1 |
| |
| Hasilkan per tahun | 1 |
|
Hasilkan per bulan | 1 |
| |
Hasilkan per hari | 1 |
| |
| Hasilkan per tahun | 1 |
|
Hasilkan per bulan | 1 |
| |
Hasilkan per hari | 1 |
| |
| Hasilkan per tahun | 1 |
|
Hasilkan per bulan | 1 |
| |
Hasilkan per hari | 1 |
| |
| Hasilkan per tahun | 1 |
|
Hasilkan per bulan | 1 |
| |
Hasilkan per hari | 1 |
| |
| Hasilkan per tahun | 1 |
|
| Hasilkan per tahun | 1 |
|
Hasilkan per bulan | 1 |
| |
| Hasilkan per tahun | 1 |
|
Hasilkan per bulan | 1 |
| |
Hasilkan per hari | 1 |
| |
Catatan: Unix timestamp | Hasilkan per tahun | 1 |
|
Hasilkan per bulan | 1 |
| |
Hasilkan per hari | 1 |
|
Ekspresi untuk menghasilkan batas atas partisi dalam mode Oracle
Ekspresi partisi contoh | Deskripsi | Interval waktu | Ekspresi SQL untuk menghitung batas atas partisi |
| Hasilkan per tahun |
|
|
| Hasilkan per tahun |
|
|
Hasilkan per bulan |
|
| |
| Hasilkan per tahun |
|
|
Hasilkan per bulan |
|
| |
| Hasilkan per tahun |
|
|
Hasilkan per bulan |
|
| |
| Hasilkan per tahun |
|
|
Hasilkan per bulan |
|
| |
Hasilkan per hari |
|
| |
| Hasilkan per tahun |
|
|
Hasilkan per bulan |
|
| |
Hasilkan per hari |
|
| |
| Hasilkan per tahun |
|
|
Hasilkan per bulan |
|
| |
Hasilkan per hari |
|
| |
| Hasilkan per tahun |
|
|
Hasilkan per bulan |
|
| |
Hasilkan per hari |
|
| |
| Hasilkan per tahun |
|
|
Hasilkan per bulan |
|
| |
Hasilkan per hari |
|
| |
| Hasilkan per tahun |
|
|
| Hasilkan per tahun |
|
|
Hasilkan per bulan |
|
| |
| Hasilkan per tahun |
|
|
Hasilkan per bulan |
|
| |
Hasilkan per hari |
|
|
Strategi peningkatan berurutan
Metode Peningkatan Berurutan hanya berlaku untuk kunci partisi bertipe waktu.
Waktu referensi untuk metode ini bisa berupa waktu saat ini atau waktu yang ditentukan. Partisi dihasilkan secara berurutan berdasarkan interval waktu yang ditentukan.
Strategi pembuatan nama partisi
Anda dapat menggunakan strategi berbeda untuk menghasilkan nama partisi yang terkait dengan isi dari partisi tersebut.
Saat ini, tersedia dua strategi pembuatan nama partisi:
Strategi awalan + akhiran: Nama partisi yang dihasilkan berdasarkan strategi ini terdiri dari awalan dan akhiran. Awalan adalah konstanta string, dan akhiran mereferensikan nilai ekspresi SQL dari kunci partisi tipe waktu yang ditentukan. Anda dapat memodifikasi awalan, akhiran, waktu referensi, dan format output untuk menghasilkan nama partisi yang berbeda.
PentingStrategi ini hanya berlaku untuk kunci partisi bertipe waktu. Karena kunci partisi yang direferensikan oleh akhiran bertipe waktu, nilai ekspresi SQL-nya dapat dikonversi menjadi nilai waktu, lalu diformat dan di-output sebagai akhiran nama partisi.
Strategi Kustom: Strategi ini menggunakan ekspresi penamaan untuk menghasilkan nama partisi sesuai kebutuhan pengguna. Nilai ekspresi SQL dari kunci partisi dapat direferensikan dalam ekspresi penamaan melalui
${partitioning key}.
Tabel referensi cepat berikut mencantumkan ekspresi umum yang disediakan oleh ODC untuk menghasilkan nama partisi. Kunci partisi dalam tabel harus bertipe numerik atau karakter.
Ekspresi untuk menghasilkan nama partisi dalam mode MySQL
Ekspresi partisi contoh | Ekspresi penamaan | Pratinjau |
|
| P2024 |
| ||
|
| P202401 |
| ||
|
| P202401 |
| P2024_01 | |
|
| P202401 |
| P2024_01 | |
|
| P20240101 |
| ||
|
| P20240101 |
| P2024_01_01 | |
|
| P20240101 |
| P2024_01_01 | |
|
| P20240101 |
| P2024_01_01 | |
|
| P20240101 |
| P2024_01_01 | |
Catatan: timestamp, dalam detik |
| P2024 |
| P202401 | |
| P2024_01 | |
| P20240101 | |
| P2024_01_01 |
Ekspresi untuk menghasilkan nama partisi dalam mode Oracle
Ekspresi partisi contoh | Ekspresi penamaan | Pratinjau |
|
| P2024 |
| ||
|
| P202401 |
| ||
|
| P202401 |
| P2024_01 | |
|
| P202401 |
| P2024_01 | |
|
| P20240101 |
| ||
|
| P20240101 |
| P2024_01_01 | |
|
| P20240101 |
| P2024_01_01 | |
|
| P20240101 |
| P2024_01_01 | |
|
| P20240101 |
| P2024_01_01 |
Strategi penghapusan partisi
Menghapus partisi dari tabel yang berisi indeks global akan membatalkan validitas indeks global. Berhati-hatilah. Memilih untuk membangun kembali indeks global dapat menyebabkan masalah bisnis karena proses yang memakan waktu atau masalah online akibat kegagalan pembangunan ulang.
Opsi pembangunan ulang indeks global hanya disediakan dalam mode Oracle. Dalam mode MySQL, indeks global akan dibangun ulang secara default.
Saat menetapkan strategi penghapusan partisi, Anda harus mempertimbangkan dampak dari partisi yang telah dibuat sebelumnya dan menghindari penghapusan partisi historis secara tidak sengaja. Sebagai contoh, asumsikan bahwa partisi dihasilkan untuk tabel per bulan. Untuk mempertahankan partisi yang dihasilkan dalam 12 bulan terakhir, tetapkan Jumlah Partisi yang Dipertahankan menjadi
12. Jika strategi pembuatan partisi membuat partisi untuk tiga bulan ke depan, partisi yang dibuat dalam sembilan bulan terakhir dan tiga bulan mendatang akan benar-benar dipertahankan.
Strategi penghapusan partisi berlaku untuk partisi yang ada. Saat ini, hanya satu strategi penghapusan yang didukung, yaitu N partisi terbaru dipertahankan dan sisanya dihapus.
Berikut adalah contohnya:
Buat tabel bernama
orderyang berisi partisip2023_01danp2023_02.partisi.CREATE TABLE `order` ( `time` date NOT NULL, `parti_key` int(11), `name` varchar(120) DEFAULT NULL ) partition by range columns(time, parti_key) (partition p2023_01 values less than ('2023-01-01', 20230101), partition p2023_02 values less than ('2023-02-01', 20230201))Konfigurasikan strategi penghapusan partisi yang mempertahankan partisi terbaru untuk tabel
order.Pernyataan penghapusan partisi yang dibentuk berdasarkan strategi penghapusan partisi akan menghapus partisi
p2023_01.
Pertimbangan
Membuat partisi untuk tabel dalam grup tabel dapat gagal atau merusak status penyeimbangan beban. Berhati-hatilah saat Anda memutuskan untuk mengonfigurasi strategi pembuatan partisi untuk tabel semacam itu.
Membuat partisi untuk tabel dalam grup tabel dapat membatalkan validitas grup tabel, karena tabel dalam grup tabel yang sama harus memiliki jumlah partisi yang sama.
Menghapus partisi dari tabel yang berisi indeks global akan membatalkan validitas indeks global. Berhati-hatilah. Memilih untuk membangun kembali indeks global dapat menyebabkan masalah bisnis karena proses yang memakan waktu atau masalah online akibat kegagalan pembangunan ulang.
Opsi pembangunan ulang indeks global hanya disediakan dalam mode Oracle. Dalam mode MySQL, indeks global akan dibangun ulang secara default.