Topik ini menjelaskan cara kerja pembagian partisi otomatis dan penggunaannya.
Cara kerjanya
Fitur sharding tabel terdistribusi transparan dari PolarDB-X mempartisi semua tabel non-partisi yang dibuat tanpa sintaks partisi MySQL eksplisit di database logis. Berikut adalah penjelasan cara kerja pembagian partisi otomatis:
Tabel-tabel dipartisi secara horizontal berdasarkan kunci utama. Jika tidak ada kunci utama, sistem akan membuat dan menggunakan kunci utama default
_drds_implicit_id_.Semua indeks diubah menjadi indeks global sesuai aturan pembagian partisi otomatis, dan tabel-tabel dipartisi secara horizontal berdasarkan kolom indeks.
Jumlah partisi default setelah pembagian partisi otomatis tidak dapat dimodifikasi secara manual.
Skenario
Fitur ini mengubah indeks reguler menjadi indeks global, yang dapat menurunkan performa penulisan karena transaksi terdistribusi diperlukan untuk menjaga konsistensi antara tabel indeks global dan tabel utama. Oleh karena itu, fitur ini cocok untuk aplikasi dengan persyaratan performa rendah yang dikembangkan berdasarkan database MySQL mandiri, seperti aplikasi baru yang perlu dirilis dengan cepat. Umumnya, layanan ini hanya memerlukan sejumlah kecil database dan tabel serta query sederhana, seperti query titik berdasarkan kunci utama.
Untuk informasi lebih lanjut tentang skenario yang sesuai untuk fitur pembagian partisi otomatis, lihat Praktik terbaik.
Prasyarat
Hanya database AUTO yang mendukung fitur pembagian partisi otomatis terdistribusi transparan. Anda harus menentukan
MODE='AUTO'dalam Pernyataan SQL untuk membuat database.CREATE DATABASE db_name MODE='AUTO';Secara default, database dalam mode AUTO menggunakan pembagian partisi manual. Untuk mengaktifkan pembagian partisi otomatis, Anda harus menyetel parameter global berikut secara manual:
SET GLOBAL AUTO_PARTITION = true;
Contoh
Buat database yang menggunakan fitur pembagian partisi otomatis
Untuk menggunakan fitur pembagian partisi otomatis di PolarDB-X, gunakan Pernyataan SQL berikut untuk membuat database:
CREATE DATABASE autodb2 MODE='AUTO';Mode kerja default distribusi transparan library AUTO adalah pembagian partisi manual. Anda harus mengeksekusi saklar global berikut untuk mengaktifkan pembagian partisi otomatis:
SET GLOBAL AUTO_PARTITION=true;Buat beberapa tabel MySQL non-partisi dan partisi otomatis tabel-tabel tersebut
Eksekusi Pernyataan SQL berikut untuk membuat tabel yang berisi indeks kunci utama (idx_name):
CREATE TABLE auto_t1(
id BIGINT NOT NULL auto_increment,
bid INT,
name VARCHAR(30),
birthday datetime,
PRIMARY KEY(id),
INDEX idx_name(name)
);Lihat pernyataan lengkap untuk membuat database yang menggunakan fitur pembagian partisi otomatis:
SHOW FULL CREATE TABLE auto_t1;Hasil contoh:
CREATE PARTITION TABLE `auto_t1` (
`id` bigint NOT NULL AUTO_INCREMENT,
`bid` int DEFAULT NULL,
`name` varchar(30) DEFAULT NULL,
`birthday` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
GLOBAL INDEX /* idx_name_$578c */ `idx_name` (`name`)
PARTITION BY KEY(`name`,`id`)
PARTITIONS 16,
LOCAL KEY `_local_idx_name` (`name`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 DEFAULT COLLATE = utf8mb4_0900_ai_ci
PARTITION BY KEY(`id`)
PARTITIONS 16Hasilnya menunjukkan bahwa indeks reguler idx_name diubah menjadi indeks global oleh sistem berdasarkan aturan pembagian partisi otomatis, dan kunci utama id digunakan sebagai kunci partisi untuk pembagian.