PolarDB for MySQL mendukung parameter PERIKSA UNIK ABAIKAN (UCI) yang memungkinkan tabel partisi mengabaikan pemeriksaan keunikan untuk kunci partisi. Fitur ini tersedia mulai MySQL versi 8.0.2.2.17 dan lebih baru.
Fitur ini dalam rilis canary. Untuk menggunakan fitur ini, kunjungi Pusat Kuota. Masukkan
polardb_mysql_ucipada kolom quota ID untuk menemukan kuota. Klik Apply di kolom Actions.Untuk informasi lebih lanjut tentang UCI, bergabunglah dengan grup DingTalk 24490017825.
Sintaks
UCI adalah atribut yang dapat Anda atur dalam parameter table_options saat membuat tabel PolarDB. Jika Anda mengatur UNIQUE CHECK IGNORE=1, tabel akan mengabaikan pemeriksaan keunikan untuk kunci partisi dan tidak mempertimbangkan hubungan antara kunci partisi dengan kunci utama atau kunci unik. Anda dapat memilih kolom apa pun sebagai kunci partisi. Sintaks:
CREATE TABLE [ schema. ]table_name
table_definition table_options
PARTITION BY ...
SUBPARTITION BY ...Opsi UNIQUE CHECK IGNORE = { 1| 0 } ditambahkan ke parameter table_options. Pengaturan UNIQUE CHECK IGNORE=1 menentukan bahwa kunci utama dan kunci unik tidak perlu mencakup semua kolom dari kunci partisi. Anda dapat memilih kolom apa pun sebagai kunci partisi. Namun, ini hanya memastikan keunikan kunci utama dan kunci unik dalam satu partisi, tetapi memungkinkan duplikasi antar partisi yang berbeda.
UNIQUE CHECK IGNOREhanya dapat digunakan pada tabel partisi. Jika diterapkan pada tabel non-partisi, kesalahan akan dilaporkan.UNIQUE CHECK IGNOREbersifat baca-saja dan tidak dapat diubah setelah tabel dibuat.Tabel partisi yang dibuat dengan UNIQUE CHECK IGNORE=1 tidak menjamin keunikan kunci utama. Untuk memastikan keunikan kunci utama, Anda harus membuat indeks sekunder global (GSI) yang unik untuk kolom kunci utama. Jika tidak, mungkin terdapat nilai kolom kunci utama yang duplikat di partisi yang berbeda. Untuk informasi selengkapnya, lihat Contoh 2.
Tabel partisi yang dibuat dengan UNIQUE CHECK IGNORE=1 tidak menjamin keunikan indeks pada tabel partisi tersebut. Sebaiknya Anda membuat indeks sekunder global (GSI) yang unik.
Parameter
Parameter | Deskripsi |
table_name | Nama tabel. |
Contoh
Contoh 1
CREATE TABLE t1(
a INT PRIMARY KEY,
b INT UNIQUE,
c INT
) UNIQUE CHECK IGNORE=1
PARTITION BY RANGE(c) (
PARTITION p0 VALUES LESS THAN (20) ,
PARTITION p1 VALUES LESS THAN (40) ,
PARTITION p2 VALUES LESS THAN (60)
);Contoh 2
// Membuat indeks sekunder global unik memastikan bahwa kunci utama unik.
CREATE TABLE t1(
a INT PRIMARY KEY,
b INT UNIQUE,
c INT,
UNIQUE KEY i_a_g(a) GLOBAL
) UNIQUE CHECK IGNORE=1
PARTITION BY HASH(c) PARTITIONS 11;