PolarDB for MySQL mendukung tabel partisi yang kunci primernya tidak mencakup kolom kunci partisi (UNIQUE CHECK IGNORE, disingkat UCI). Fitur UCI tersedia pada Database engine versi 8.0.2.2.17 dan yang lebih baru.
Ruang lingkup penerapan
Versi kernel kluster Anda harus memenuhi persyaratan berikut:
MySQL 8.0.1, dengan versi revisi minimal 8.0.1.1.46.
MySQL 8.0.2, dengan versi revisi minimal 8.0.2.2.26.
Untuk memverifikasi versi kernel kluster Anda, lihat Query the version number.
Referensi parameter
Parameter | Cakupan | Deskripsi |
| Global | Mengontrol apakah kunci primer atau kunci unik pada tabel partisi harus mencakup kolom kunci partisi (yaitu, apakah kunci primer dan kunci unik dipisahkan dari kunci partisi). Nilai yang valid:
Perubahan langsung berlaku tanpa perlu restart kluster. |
Sintaksis
UCI merupakan atribut dari PolarDB dalam table_options saat membuat tabel. Menentukan UNIQUE CHECK IGNORE=1 menunjukkan bahwa tabel melewati pemeriksaan keunikan pada kolom kunci partisi. Dengan demikian, hubungan antara kunci partisi dan kunci primer atau kunci unik tidak lagi diberlakukan, sehingga Anda dapat memilih kolom apa pun sebagai kunci partisi. Sintaksisnya adalah sebagai berikut:
CREATE TABLE [ schema. ]table_name
table_definition table_options
PARTITION BY ...
SUBPARTITION BY ...Dalam sintaksis ini, opsi UNIQUE CHECK IGNORE = { 1| 0 } ditambahkan ke table_options. Nilai UNIQUE CHECK IGNORE=1 menunjukkan bahwa kunci primer dan kunci unik tidak perlu mencakup semua kolom kunci partisi, sehingga memungkinkan pemilihan kunci partisi yang lebih fleksibel. Namun, keunikan kunci primer dan kunci unik lintas partisi tidak dijamin—keunikan hanya diberlakukan di dalam setiap partisi, dan nilai duplikat dapat muncul di partisi yang berbeda.
Atribut tabel
UNIQUE CHECK IGNOREhanya dapat digunakan pada tabel partisi. Menambahkan atribut ini ke tabel non-partisi akan menyebabkan error.Atribut tabel
UNIQUE CHECK IGNOREbersifat read-only. Anda tidak dapat mengubah nilaiUNIQUE CHECK IGNOREsetelah tabel dibuat.Tabel partisi UCI tidak menjamin keunikan kunci primer. Untuk memberlakukan keunikan kunci primer, Anda harus membuat Global Secondary Indexes (GSIs) unik pada kolom kunci primer. Jika tidak, nilai kunci primer duplikat diperbolehkan lintas partisi. Untuk prosedur lengkapnya, lihat Contoh 2.
Tabel partisi UCI tidak menjamin keunikan indeks unik yang tidak mencakup kolom kunci partisi. Kami menyarankan agar Anda membuatnya sebagai Global Secondary Indexes (GSIs) unik.
Parameter
Parameter | Deskripsi |
table_name | Nama tabel yang akan dibuat. |
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
// Indeks sekunder global unik menjamin keunikan kunci primer
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;