Anda dapat menggunakan pernyataan ALTER TABLE di AnalyticDB for MySQL untuk memodifikasi skema tabel. Pernyataan ini memungkinkan Anda mengubah nama tabel, nama kolom, tipe data kolom, indeks reguler, indeks terkluster, kunci asing, format fungsi partisi, dan kebijakan penyimpanan bertingkat. Topik ini menjelaskan sintaks ALTER TABLE.
Sintaks
ALTER TABLE table_name
{ ADD [COLUMN] column_name column_definition
| ADD [COLUMN] (column_name column_definition,...)
| ADD [CONSTRAINT [symbol]] FOREIGN KEY (fk_column_name) REFERENCES pk_table_name (pk_column_name)
| ADD {INDEX|KEY} [index_name] (column_name)
| ADD {INDEX|KEY} [index_name] (column_name|column_name->'$.json_path')
| ADD {INDEX|KEY} [index_name] (column_name->'$[*]')
| ADD CLUSTERED [INDEX|KEY] [index_name] (column_name [ASC|DESC])
| ADD FULLTEXT [INDEX|KEY] index_name (column_name) [index_option]
| ADD ANN [INDEX|KEY] [index_name] (column_name) [algorithm=HNSW_PQ ] [distancemeasure=SquaredL2]
| COMMENT 'comment'
| DROP CLUSTERED KEY index_name
| DROP [COLUMN] column_name
| DROP FOREIGN KEY symbol
| DROP FULLTEXT INDEX index_name
| DROP {INDEX|KEY} index_name
| DROP PARTITION (partition_name,...)
| MODIFY [COLUMN] column_name column_definition
| RENAME COLUMN column_name TO new_column_name
| RENAME new_table_name
| INDEX_ALL = {'Y'|'N'}
| storage_policy
| PARTITION BY VALUE{(column_name)|(DATE_FORMAT(column_name, 'format'))|(FROM_UNIXTIME(column_name, 'format'))} LIFECYCLE N
}
column_definition:
column_type [column_attributes][column_constraints][COMMENT 'comment']
column_attributes:
[DEFAULT{constant|CURRENT_TIMESTAMP}|AUTO_INCREMENT]
column_constraints:
[NULL|NOT NULL]
storage_policy:
STORAGE_POLICY= {'HOT'|'COLD'|'MIXED' hot_partition_count=N}Semua contoh dalam topik ini, kecuali yang melibatkan indeks JSON, kunci asing, dan indeks vektor, didasarkan pada tabel customer yang dibuat dalam topik CREATE TABLE. Jika Anda telah membuat tabel customer, Anda dapat menjalankan contoh dalam topik ini. Jika belum, salin dan jalankan pernyataan berikut untuk membuat tabel customer.
Tabel
Mengubah nama tabel
Sintaks
ALTER TABLE db_name.table_name RENAME new_table_nameContoh
Ganti nama tabel customer menjadi new_customer.
ALTER TABLE customer RENAME new_customer;Mengubah komentar tabel
Sintaks
ALTER TABLE db_name.table_name COMMENT 'comment'Contoh
Ubah komentar untuk tabel customer menjadi 'Tabel pelanggan'.
ALTER TABLE customer COMMENT 'Tabel pelanggan';;Kolom
Menambahkan kolom
Sintaks
ALTER TABLE db_name.table_name ADD [COLUMN]
{column_name column_type [DEFAULT {constant|CURRENT_TIMESTAMP}|AUTO_INCREMENT] [NULL|NOT NULL] [COMMENT 'comment']
| (column column_type [DEFAULT {constant|CURRENT_TIMESTAMP}|AUTO_INCREMENT] [NULL|NOT NULL] [COMMENT 'comment'],...)}Catatan
Anda tidak dapat menambahkan kolom kunci primer.
Contoh
Tambahkan kolom bernama
provincedengan tipe VARCHAR ke tabelcustomer.
ALTER TABLE adb_demo.customer ADD COLUMN province VARCHAR COMMENT 'Provinsi';Tambahkan dua kolom ke tabel
customer: kolom bernamavipdengan tipe BOOLEAN dan kolom bernamatagsdengan tipe VARCHAR.
ALTER TABLE adb_demo.customer ADD COLUMN (vip BOOLEAN COMMENT 'Apakah VIP',tags VARCHAR DEFAULT 'None' COMMENT 'Tag');Menghapus kolom
Sintaks
ALTER TABLE db_name.table_name DROP [COLUMN] column_nameCatatan
Anda tidak dapat menghapus kolom kunci primer.
Contoh
Hapus kolom province dengan tipe VARCHAR dari tabel customer.
ALTER TABLE adb_demo.customer DROP COLUMN province;Mengubah nama kolom
Sintaks
ALTER TABLE db_name.table_name RENAME COLUMN column_name to new_column_nameCatatan
Anda tidak dapat mengubah nama kolom kunci primer.
Contoh
Ubah nama kolom city_name menjadi city di tabel customer.
ALTER TABLE customer RENAME COLUMN city_name to city;Mengubah tipe data kolom
Sintaks
ALTER TABLE db_name.table_name MODIFY [COLUMN] column_name new_column_typeCatatan
Anda tidak dapat mengubah tipe data kolom kunci primer.
Batasan berikut berlaku untuk perubahan tipe data:
Anda hanya dapat mengubah tipe data menjadi tipe data lain dengan rentang nilai yang lebih luas.
Tipe data integer: Anda dapat mengubah tipe integer yang lebih kecil menjadi yang lebih besar, misalnya dari TINYINT ke BIGINT. Anda tidak dapat mengubah dari BIGINT ke TINYINT. Tipe integer yang didukung adalah TINYINT, SMALLINT, INT, dan BIGINT.
Tipe data floating-point: Anda dapat mengubah FLOAT menjadi DOUBLE, tetapi tidak sebaliknya.
Anda dapat mengubah tipe data integer (TINYINT, SMALLINT, INT, atau BIGINT) menjadi tipe data floating-point (FLOAT atau DOUBLE).
Anda dapat meningkatkan presisi tipe DECIMAL. Anda tidak dapat menurunkan presisi.
PentingHanya kluster dengan versi kernel 3.1.8.10 hingga 3.1.8.x, 3.1.9.6 hingga 3.1.9.x, 3.1.10.3 hingga 3.1.10.x, atau 3.2.0.1 atau lebih baru yang mendukung pengubahan tipe data integer menjadi tipe data floating-point dan perubahan presisi tipe DECIMAL.
Contoh
Ubah tipe data kolom age di tabel customer dari INT menjadi BIGINT.
ALTER TABLE adb_demo.customer MODIFY COLUMN age BIGINT;Mengubah nilai default kolom
Sintaks
ALTER TABLE db_name.table_name MODIFY [COLUMN] column_name column_type DEFAULT {constant | CURRENT_TIMESTAMP}Contoh
Tetapkan nilai default kolom
sexdi tabelcustomermenjadi 0.
ALTER TABLE adb_demo.customer MODIFY COLUMN sex INT NOT NULL DEFAULT 0;Tetapkan nilai default kolom
login_timedi tabelcustomermenjadi CURRENT_TIMESTAMP.
ALTER TABLE adb_demo.customer MODIFY COLUMN login_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;Mengizinkan nilai NULL
Sintaks
ALTER TABLE db_name.table_name MODIFY [COLUMN] column_name column_type {NULL}Catatan
Anda hanya dapat mengubah kendala NOT NULL menjadi NULL.
Contoh
Izinkan kolom province di tabel customer menerima nilai NULL.
ALTER TABLE adb_demo.customer MODIFY COLUMN province VARCHAR NULL;Mengubah komentar kolom
Sintaks
ALTER TABLE db_name.table_name MODIFY [COLUMN] column_name column_type COMMENT 'new_comment'Contoh
Ubah komentar kolom province di tabel customer menjadi 'Provinsi tempat pelanggan berada'.
ALTER TABLE adb_demo.customer MODIFY COLUMN province VARCHAR COMMENT 'Provinsi tempat pelanggan berada';Indeks
Menambahkan indeks
Secara default, AnalyticDB for MySQL tidak membuat indeks kolom penuh untuk tabel XUANWU_V2 (INDEX_ALL='N'), tetapi membuatnya untuk tabel XUANWU (INDEX_ALL='Y'). Jika indeks kolom penuh tidak dibuat saat Anda membuat tabel XUANWU_V2 atau XUANWU, Anda dapat menambahkan indeks ke kolom.
Sintaks
ALTER TABLE db_name.table_name ADD {INDEX|KEY} [index_name] (column_name)Deskripsi parameter
column_name: Nama kolom. Kolom harus memiliki tipe data sederhana. Jika kolom bertipe data JSON, lihat Menambahkan indeks JSON.
Contoh
Tambahkan indeks ke kolom age di tabel customer.
ALTER TABLE adb_demo.customer ADD KEY age_idx(age);Memodifikasi indeks kolom penuh
Untuk tabel XUANWU_V2 di AnalyticDB for MySQL, Anda dapat memodifikasi indeks kolom penuh setelah tabel dibuat. Ini dikonfigurasi menggunakan properti tabel INDEX_ALL. Operasi ini tidak memengaruhi indeks non-reguler, seperti indeks JSON, teks penuh, dan vektor.
Prasyarat
Tabel XUANWU_V2 berada di kluster dengan versi mesin utama 3.2.3.7 atau lebih baru, atau 3.2.4.3 atau lebih baru.
Untuk melihat dan memperbarui versi minor kluster AnalyticDB for MySQL, masuk ke Konsol AnalyticDB for MySQL dan buka bagian Configuration Information pada halaman Cluster Information.
Sintaks
ALTER TABLE db_name.table_name INDEX_ALL = {'Y'|'N'};Deskripsi parameter
Y: Mode indeks kolom penuh. Membuat indeks reguler untuk semua kolom.Jika Anda mengubah properti tabel dari
INDEX_ALL='N'menjadiINDEX_ALL='Y', indeks reguler dibuat untuk semua kolom yang belum memilikinya.N: Mode non-indeks kolom penuh. Membuat indeks reguler hanya untuk kunci primer. Kolom lain tidak akan memiliki indeks reguler.Jika Anda mengubah properti tabel dari
INDEX_ALL='Y'menjadiINDEX_ALL='N', semua indeks reguler dihapus, kecuali indeks pada kolom kunci primer.
Catatan
Untuk tabel XUANWU, fitur indeks kolom penuh hanya dapat dikonfigurasi saat pembuatan tabel. Untuk menonaktifkan pengindeksan kolom penuh, Anda harus menghapus indeks secara manual dengan menjalankan pernyataan penghapusan indeks.
Jika
INDEX_ALL='Y', menjalankan pernyataan Data Definition Language (DDL) untuk menghapus indeks reguler secara otomatis mengubah properti dariINDEX_ALL='Y'menjadiINDEX_ALL='N'. Operasi ini hanya menghapus indeks reguler target dan tidak memengaruhi indeks reguler lainnya.Ketika properti tabel adalah
INDEX_ALL='N', pernyataan SHOW CREATE TABLE mungkin tidak secara eksplisit menampilkan properti sebagaiINDEX_ALL='N'. Namun, properti yang berlaku tetapINDEX_ALL='N'.
Contoh
Asumsikan tabel
customermemilikiINDEX_ALL='Y'. Jalankan pernyataan berikut untuk mengubah properti tabel menjadiINDEX_ALL='N'.ALTER TABLE adb_demo.customer INDEX_ALL = 'N';Setelah pernyataan dijalankan, indeks reguler pada semua kolom non-kunci primer, seperti
customer_name,city_name, dansex, dihapus.Asumsikan tabel
customermemilikiINDEX_ALL='N', dan kolomcustomer_id,phone_num, danlogin_timesudah memiliki indeks. Jalankan pernyataan berikut untuk mengubah properti tabel menjadiINDEX_ALL='Y'.ALTER TABLE adb_demo.customer INDEX_ALL = 'Y';Setelah pernyataan dijalankan, indeks reguler dibuat untuk kolom yang belum memilikinya, seperti
customer_name,city_name, dansex.
Menambahkan indeks JSON
Catatan
Untuk tabel XUANWU_V2 (partisi dan non-partisi), indeks JSON atau indeks Array JSON yang Anda buat langsung berlaku tanpa memerlukan pekerjaan BUILD.
Untuk tabel XUANWU non-partisi, indeks JSON atau indeks Array JSON yang Anda buat hanya berlaku setelah pekerjaan BUILD selesai.
Untuk tabel XUANWU partisi, Anda harus secara manual memaksa pekerjaan BUILD seluruh tabel. Indeks JSON atau indeks Array JSON yang Anda buat hanya berlaku setelah pekerjaan BUILD selesai.
Indeks JSON
Sintaks
ALTER TABLE db_name.table_name ADD {INDEX|KEY} [index_name] (column_name|column_name->'$.json_path')Deskripsi parameter
column_name: Membuat indeks pada kolom JSON. Kolom harus bertipe JSON.
column_name->'$.json_path': Membuat indeks pada kunci properti tertentu dalam objek JSON. Kolom yang ditentukan oleh column_name harus bertipe JSON. Untuk informasi lebih lanjut, lihat Indeks JSON.
PentingHanya kluster AnalyticDB for MySQL versi V3.1.6.8 atau lebih baru yang mendukung parameter
column_name->'$.json_path.Untuk melihat dan memperbarui versi minor kluster AnalyticDB for MySQL, masuk ke Konsol AnalyticDB for MySQL dan buka bagian Configuration Information pada halaman Cluster Information.
Jika kolom JSON sudah memiliki indeks, Anda harus menghapus indeks untuk kolom JSON tersebut sebelum dapat membuat indeks untuk kunci properti kolom JSON tersebut.
Contoh
Asumsikan skema tabel dan pernyataan INSERT adalah sebagai berikut.
CREATE TABLE json_test(
id INT,
vj JSON
)
DISTRIBUTED BY HASH(id);INSERT INTO json_test VALUES(1,'{"a":1,"b":2}'),(2,'{"a":2,"b":3}'));Buat indeks JSON pada properti a dari kolom vj di tabel json_test.
ALTER TABLE json_test ADD KEY age_idx(vj->'$.a');Indeks Array JSON
Sintaks
ALTER TABLE db_name.table_name ADD {INDEX|KEY} [index_name] (column_name->'$[*]')Deskripsi parameter
column_name->'$[*]': column_name adalah kolom untuk indeks Array JSON. Misalnya, vj->'$[*]' membuat indeks Array JSON pada kolom vj.
Contoh
Asumsikan skema tabel dan pernyataan INSERT adalah sebagai berikut.
CREATE TABLE json_test(
id INT,
vj JSON
)
DISTRIBUTED BY HASH(id);INSERT INTO json_test VALUES(1, '["CP-018673", 1, false]');Buat indeks Array JSON pada kolom vj di tabel json_test.
ALTER TABLE json_test ADD KEY index_vj(vj->'$[*]');Menghapus indeks atau indeks JSON
Sintaks
ALTER TABLE db_name.table_name DROP KEY index_nameDeskripsi parameter
index_name: Nama indeks reguler. Anda dapat menjalankan SHOW INDEX FROM db_name.table_name; untuk menemukan index_name.
Contoh
Hapus indeks bernama
age_idxdari tabelcustomer.ALTER TABLE adb_demo.customer DROP KEY age_idx;Hapus indeks Array JSON bernama
index_vjdari tabeljson_test.ALTER TABLE adb_demo.customer DROP KEY index_vj;
Menambahkan indeks terkluster
Sintaks
ALTER TABLE db_name.table_name ADD CLUSTERED [INDEX|KEY] [index_name] (column_name1 [ASC|DESC], column_name2 [ASC|DESC])Catatan
Secara default, indeks terkluster diurutkan secara ascending (ASC) dan cocok untuk kueri yang diurutkan secara ascending. Jika kueri Anda diurutkan secara descending, atur indeks terkluster ke descending (DESC) saat membuat tabel.
Sebuah tabel hanya dapat memiliki satu indeks terkluster. Anda tidak dapat menambahkan indeks terkluster lain jika sudah ada.
Setelah indeks terkluster ditambahkan, Anda harus memicu dan menyelesaikan pekerjaan BUILD agar indeks terkluster berlaku. Anda dapat menjalankan pernyataan
SHOW CREATE TABLE db_name.table_name;untuk menentukan apakah indeks terkluster telah berlaku.
Contoh
Anda dapat menambahkan indeks terkluster ke kolom customer_id di tabel customer.
ALTER TABLE adb_demo.customer ADD CLUSTERED KEY (customer_id ASC);Menghapus indeks terkluster
Sintaks
ALTER TABLE db_name.table_name DROP CLUSTERED KEY index_nameDeskripsi parameter
index_name: Nama indeks terkluster. Anda dapat menjalankan SHOW CREATE TABLE db_name.table_name untuk menemukan nama indeks terkluster.
Contoh
Hapus indeks terkluster bernama index dari tabel customer.
ALTER TABLE adb_demo.customer DROP CLUSTERED KEY index;Menambahkan indeks teks penuh
Prasyarat
Kluster AnalyticDB for MySQL versi V3.1.4.9 atau lebih baru telah dibuat.
Kami merekomendasikan penggunaan kluster AnalyticDB for MySQL versi V3.1.4.17 atau lebih baru.
Untuk informasi tentang cara menanyakan versi minor kluster AnalyticDB for MySQL, lihat Bagaimana cara menanyakan versi kluster AnalyticDB for MySQL?
Sintaks
ALTER TABLE db_name.table_name ADD FULLTEXT [INDEX|KEY] index_name (column_name) [index_option]Deskripsi parameter
column_name: Kolom tempat membuat indeks teks penuh. Kolom harus bertipe VARCHAR.
index_option: Opsional. Menentukan pemisah kata dan kamus kustom untuk indeks teks penuh.
WITH ANALYZER analyzer_name: menentukan alat analisis yang digunakan untuk indeks teks penuh. Untuk informasi lebih lanjut tentang alat analisis yang didukung oleh AnalyticDB for MySQL, lihat Alat analisis untuk indeks teks penuh.WITH DICT tbl_dict_name: menentukan kamus kustom yang digunakan untuk indeks teks penuh. Untuk informasi lebih lanjut tentang kamus kustom yang didukung oleh AnalyticDB for MySQL, lihat Kamus kustom untuk indeks teks penuh.
Catatan
Indeks teks penuh yang Anda buat hanya berlaku setelah pekerjaan BUILD dipicu ulang dan selesai.
Contoh
Tambahkan indeks teks penuh ke kolom home_address dari tabel customer.
ALTER TABLE adb_demo.customer ADD FULLTEXT INDEX fidx_k(home_address) WITH ANALYZER standard;Menghapus indeks teks penuh
Sintaks
ALTER TABLE db_name.table_name DROP FULLTEXT INDEX index_nameDeskripsi parameter
column_name: Nama kolom tempat membuat indeks teks penuh. Kolom harus bertipe VARCHAR.
index_option: Alat analisis dan kamus kustom yang digunakan untuk indeks teks penuh. Parameter ini opsional.
WITH ANALYZER analyzer_name: menentukan alat analisis yang digunakan untuk indeks teks penuh. Untuk informasi lebih lanjut tentang alat analisis yang didukung oleh AnalyticDB for MySQL, lihat Alat analisis untuk indeks teks penuh.WITH DICT tbl_dict_name: menentukan kamus kustom yang digunakan untuk indeks teks penuh. Untuk informasi lebih lanjut tentang kamus kustom yang didukung oleh AnalyticDB for MySQL, lihat Kamus kustom untuk indeks teks penuh.
Contoh
Hapus indeks teks penuh fidx_k dari tabel customer.
ALTER TABLE adb_demo.customer DROP FULLTEXT INDEX fidx_k;Untuk informasi lebih lanjut, lihat Membuat indeks teks penuh.
Menambahkan indeks vektor
Prasyarat
Kluster AnalyticDB for MySQL versi V3.1.4.0 atau lebih baru telah dibuat.
Untuk menggunakan fitur pencarian vektor, kami merekomendasikan penggunaan versi minor berikut: 3.1.5.16, 3.1.6.8, 3.1.8.6, dan versi lebih baru.
Jika kluster Anda bukan versi di atas, kami merekomendasikan agar Anda mengatur parameter CSTORE_PROJECT_PUSH_DOWN dan CSTORE_PPD_TOP_N_ENABLE menjadi false sebelum menggunakan fitur pencarian vektor.
Untuk informasi tentang cara menanyakan versi minor kluster AnalyticDB for MySQL, lihat Bagaimana cara menanyakan versi kluster AnalyticDB for MySQL? Untuk memperbarui versi minor kluster, hubungi dukungan teknis.
Sintaks
ALTER TABLE db_name.table_name ADD ANN [INDEX|KEY] [index_name] (column_name) [algorithm=HNSW_PQ ] [distancemeasure=SquaredL2]Deskripsi parameter
index_name: nama indeks. Untuk informasi tentang konvensi penamaan indeks, lihat bagian "Batasan penamaan" dalam topik Batasan.
column_name: Nama kolom vektor. Tipe kolom harus
array <float>,array <byte>, atauarray <smallint>.algorithm: algoritma yang digunakan untuk menghitung jarak vektor. Tetapkan nilainya ke
HNSW_PQ.distancemeasure: rumus yang digunakan untuk menghitung jarak vektor. Tetapkan nilainya ke
SquaredL2. Rumus perhitunganSquaredL2:(x1 - y1)<sup>2</sup> + (x2 - y2)<sup>2</sup> + ...(xn - yn)<sup>2</sup>.
Contoh
Asumsikan Anda memiliki tabel bernama vector yang dibuat menggunakan pernyataan berikut.
CREATE TABLE vector (
xid BIGINT not null,
cid BIGINT not null,
uid VARCHAR not null,
vid VARCHAR not null,
wid VARCHAR not null,
float_feature array < FLOAT >(4),
short_feature array < SMALLINT >(4),
PRIMARY KEY (xid, cid, vid)
) DISTRIBUTED BY HASH(xid);Buat indeks vektor pada kolom float_feature dan short_feature.
ALTER TABLE vector ADD ANN INDEX idx_float_feature(float_feature);
ALTER TABLE vector ADD ANN INDEX idx_short_feature(short_feature);Menambahkan kunci asing
Prasyarat
Kluster AnalyticDB for MySQL harus menjalankan versi kernel 3.1.10 atau lebih baru.
Untuk melihat dan memperbarui versi minor kluster AnalyticDB for MySQL, masuk ke Konsol AnalyticDB for MySQL dan buka bagian Configuration Information pada halaman Cluster Information.
Sintaks
ALTER TABLE db_name.table_name ADD [CONSTRAINT [symbol]] FOREIGN KEY (fk_column_name) REFERENCES db_name.pk_table_name (pk_column_name)Deskripsi parameter
db_name.table_name: Tabel tempat Anda ingin menambahkan kunci asing.
symbol: Opsional. Nama kendala kunci asing, yang harus unik dalam tabel. Jika tidak ditentukan, resolver secara otomatis menambahkan akhiran _fk ke nama kolom kunci asing sebagai nama kendala.
fk_column_name: Menentukan kolom kunci asing. Kolom kunci asing harus didefinisikan dalam pernyataan CREATE TABLE.
pk_table_name: Menentukan nama tabel utama. Tabel utama harus sudah ada.
pk_column_name: Menentukan kolom kendala kunci asing. Kolom ini harus ada dan merupakan kolom kunci primer dari tabel utama.
Catatan
Setiap tabel dapat memiliki beberapa indeks kunci asing.
Indeks kunci asing komposit, yang terdiri dari beberapa kolom, tidak didukung. Misalnya,
FOREIGN KEY (sr_item_sk, sr_ticket_number) REFERENCES store_sales(ss_item_sk,d_date_sk)tidak didukung.AnalyticDB for MySQL tidak melakukan pemeriksaan kendala data. Anda harus memastikan hubungan kendala data antara kunci primer tabel utama dan kunci asing tabel detail.
Anda tidak dapat membuat kendala kunci asing pada tabel eksternal.
Contoh
Asumsikan Anda memiliki dua tabel, item dan store_sales, yang dibuat menggunakan pernyataan berikut.
CREATE TABLE item
(
i_item_sk BIGINT NOT NULL,
i_current_price BIGINT,
PRIMARY KEY(i_item_sk)
)
DISTRIBUTED BY HASH(i_item_sk);CREATE TABLE store_sales
(
ss_sale_id BIGINT,
ss_store_sk BIGINT,
ss_item_sk BIGINT NOT NULL,
PRIMARY KEY(ss_sale_id)
);Tambahkan kunci asing ss_item_sk ke tabel store_sales dan kaitkan dengan kunci i_item_sk dari tabel item.
ALTER TABLE store_sales ADD CONSTRAINT ss_item_sk FOREIGN KEY (ss_item_sk) REFERENCES item (i_item_sk);Untuk informasi lebih lanjut, lihat Menghilangkan join yang tidak perlu menggunakan kendala kunci primer dan kunci asing.
Menghapus kunci asing
Sintaks
ALTER TABLE db_name.table_name DROP FOREIGN KEY fk_symbolContoh
ALTER TABLE store_returns DROP FOREIGN KEY sr_item_sk_fk;Partisi
Mengubah siklus hidup partisi
Sintaks
ALTER TABLE db_name.table_name PARTITIONS NCatatan
Untuk kluster dengan versi kernel 3.2.4.1 atau lebih baru, Anda dapat menghapus manajemen siklus hidup partisi dengan mengatur parameter LIFECYCLE
Nmenjadi0.Setelah Anda mengubah siklus hidup partisi, tugas BUILD harus dipicu dan diselesaikan agar siklus hidup baru berlaku. Anda dapat menjalankan pernyataan
SHOW CREATE TABLE db_name.table_name;untuk memeriksa apakah siklus hidup baru telah berlaku.
Contoh 1
Hapus siklus hidup dari tabel customer.
ALTER TABLE customer PARTITIONS 0;Contoh 2
Ubah siklus hidup tabel customer dari 30 menjadi 40.
ALTER TABLE customer PARTITIONS 40;Menghapus partisi
Pernyataan ALTER TABLE DROP PARTITION setara dengan pernyataan <a baseurl="t1854474_v6_2_0.xdita" data-node="2138850" data-root="56091" data-tag="xref" href="t1854487.xdita#" id="0a822ac288leo">TRUNCATE TABLE</a> PARTITION.
Sintaks
ALTER TABLE db_name.table_name DROP PARTITION (partition_name,...)Catatan
Setelah Anda menghapus partisi, data dalam partisi tersebut juga dihapus dan tidak dapat dipulihkan. Lakukan operasi ini dengan hati-hati.
Contoh
Hapus partisi
20241220dari tabelcustomer.ALTER TABLE adb_demo.customer DROP PARTITION (20241220);Hapus partisi
20241218dan20241219dari tabelcustomer.ALTER TABLE adb_demo.customer DROP PARTITION (20241218,20241219);
Kebijakan Penyimpanan
Mengubah kebijakan penyimpanan bertingkat
Prasyarat
Kluster adalah Edisi Perusahaan, Edisi Dasar, Edisi Data Lakehouse, atau Edisi Gudang Data (mode Elastis).
Versi kernel:
Jika mesin tabel adalah XUANWU, tidak ada batasan pada versi kernel kluster.
Jika mesin tabel adalah XUANWU_V2, versi kernel kluster harus memenuhi salah satu kondisi berikut:
3.2.2.15 atau lebih baru.
3.2.3.13 atau lebih baru.
3.2.4.9 atau lebih baru.
3.2.5.3 atau lebih baru.
CatatanUntuk melihat dan memperbarui versi minor kluster AnalyticDB for MySQL, masuk ke Konsol AnalyticDB for MySQL dan buka bagian Configuration Information pada halaman Cluster Information.
Jika mesin tabel adalah XUANWU_V2, tugas terjadwal untuk memindahkan data antara penyimpanan panas dan dingin harus diaktifkan pada kluster:
Periksa apakah tugas diaktifkan:
SHOW ADB_CONFIG KEY=SERVERLESS_DATA_STORAGE_CHANGE_SCHEDULE_ENABLE;. Jika perintah mengembalikanFALSE, tugas dinonaktifkan dan Anda harus mengaktifkannya. Jika terjadi kesalahan, parameter tidak diatur, dan nilai default adalahTRUE.Aktifkan tugas:
SET ADB_CONFIG SERVERLESS_DATA_STORAGE_CHANGE_SCHEDULE_ENABLE = true;.
Sintaks
ALTER TABLE db_name.table_name STORAGE_POLICY= {'HOT'|'COLD'|'MIXED' hot_partition_count=N}Catatan penggunaan
Setelah Anda mengubah kebijakan penyimpanan bertingkat untuk data panas dan dingin, kebijakan baru hanya berlaku setelah pekerjaan BUILD untuk tabel dipicu dan diselesaikan. Secara default, pekerjaan ini berjalan secara otomatis di latar belakang pada interval tertentu. Sebelum pekerjaan BUILD selesai, wajar jika jumlah partisi panas yang dikembalikan oleh information_schema.table_usage tidak sesuai dengan kebijakan penyimpanan yang ditentukan. Anda dapat menjalankan SHOW CREATE TABLE db_name.table_name; untuk memeriksa apakah kebijakan penyimpanan baru telah berlaku.
Contoh
Ubah kebijakan penyimpanan tabel
customermenjadi COLD.ALTER TABLE customer storage_policy = 'COLD';Ubah kebijakan penyimpanan tabel
customermenjadi HOT.ALTER TABLE customer storage_policy = 'HOT';Ubah kebijakan penyimpanan tabel
customermenjadi MIXED dan atur jumlah partisi panas menjadi 10.ALTER TABLE customer storage_policy = 'MIXED' hot_partition_count = 10;