Mengonversi tabel standar ke tabel tanpa batas - Amazon Aurora

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengonversi tabel standar ke tabel tanpa batas

Anda dapat mengonversi tabel standar menjadi tabel sharded atau referensi. Selama konversi, data dipindahkan dari tabel standar ke tabel terdistribusi, kemudian tabel standar sumber dihapus. Data dipindahkan menggunakan INSERT INTO SELECT FROM perintah.

Membuat tabel sharded

Anda membuat tabel sharded dengan menjalankan rds_aurora.limitless_alter_table_type_sharded prosedur pada tabel standar. Prosedur ini mengambil tabel standar dan daftar kolom, kemudian mendistribusikan tabel yang diberikan menggunakan daftar kolom sebagai kunci pecahan. Prosedur berjalan secara serempak, dan memperoleh ACCESS EXCLUSIVE kunci di atas meja.

Setelah prosedur selesai dengan sukses, tabel standar sumber dihapus, dan tabel sharded dengan nama yang sama menjadi tersedia.

rds_aurora.limitless_alter_table_type_shardedProsedur ini menggunakan sintaks berikut:

postgres=> CALL rds_aurora.limitless_alter_table_type_sharded('schema.table', ARRAY['shard_key1', 'shard_key2', ... 'shard_keyn']);

Prosedur ini membutuhkan parameter berikut:

  • schema— Skema database yang berisi tabel yang akan di-sharded. Jika skema tidak ditentukan, prosedur menggunakan. search_path

  • table— Meja yang akan dibelah.

  • shard_keyn— Sebuah array kolom tabel untuk digunakan sebagai kunci shard.

    Nilai kunci shard adalah literal string, dan oleh karena itu peka huruf besar/kecil. Jika kunci pecahan berisi satu kutipan ('), gunakan kutipan tunggal lain untuk menghindarinya. Misalnya, jika kolom tabel diberi namacustomer's id, gunakan customer''s id sebagai kunci shard. Backslashes (\) dan tanda kutip ganda (“) tidak perlu diloloskan.

catatan

Semua kunci primer dan unik harus menyertakan kunci shard. Ini berarti bahwa kunci shard adalah bagian dari kunci primer atau unik.

Dalam tabel sharded, CHECK kendala tidak mendukung ekspresi.

Untuk informasi selengkapnya, lihat Batasan.

Untuk membuat tabel sharded

Contoh berikut menunjukkan cara membuat tabel customer sharded dengan kunci shard. customer_id

  1. Buat tabel standar.

    CREATE TABLE customer (customer_id INT PRIMARY KEY NOT NULL, zipcode INT, email VARCHAR);
  2. Ubah tabel standar menjadi tabel sharded.

    postgres=> CALL rds_aurora.limitless_alter_table_type_sharded('public.customer', ARRAY['customer_id']); postgres=> \d List of relations Schema | Name | Type | Owner --------+--------------+-------------------+-------------------- public | customer | partitioned table | postgres_limitless public | customer_fs1 | foreign table | postgres_limitless public | customer_fs2 | foreign table | postgres_limitless public | customer_fs3 | foreign table | postgres_limitless public | customer_fs4 | foreign table | postgres_limitless public | customer_fs5 | foreign table | postgres_limitless (6 rows)

Membuat tabel kolokasi

Jika dua atau lebih tabel di-sharded menggunakan kunci shard yang sama, Anda dapat secara eksplisit menyelaraskan (collocate) tabel tersebut. Ketika dua atau lebih tabel ditempatkan, baris dari tabel dengan nilai kunci shard yang sama ditempatkan pada pecahan yang sama. Kolokasi membantu membatasi beberapa operasi ke pecahan tunggal, yang menghasilkan kinerja yang lebih baik.

Anda menggunakan rds_aurora.limitless_alter_table_type_sharded prosedur dengan sintaks berikut:

postgres=> CALL rds_aurora.limitless_alter_table_type_sharded('schema.collocated_table', ARRAY['shard_key1', 'shard_key2', ... 'shard_keyn'], 'schema.sharded_table');

Prosedur ini membutuhkan parameter berikut:

  • schema— Skema database yang berisi tabel yang akan ditempatkan. Jika skema tidak ditentukan, prosedur menggunakan. search_path

  • collocated_table— Meja yang akan ditempatkan.

  • shard_keyn— Sebuah array kolom tabel untuk digunakan sebagai kunci shard.

    Anda harus menggunakan kunci shard yang sama seperti untuk tabel sharded asli, termasuk nama kolom dan jenis kolom yang sama.

  • sharded_table— Meja sharded yang Anda gunakan untuk mengkolokasi. collocated_table

Untuk membuat tabel berkolokasi
  1. Buat tabel sharded pertama dengan mengikuti prosedur diMembuat tabel sharded.

  2. Buat tabel standar untuk tabel collocated.

    CREATE TABLE mytable2 (customer_id INT PRIMARY KEY NOT NULL, column1 INT, column2 VARCHAR);
  3. Ubah tabel standar menjadi tabel collocated.

    postgres=> CALL rds_aurora.limitless_alter_table_type_sharded('public.mytable2', ARRAY['customer_id'], 'public.customer'); postgres=> \d List of relations Schema | Name | Type | Owner --------+--------------+-------------------+-------------------- public | customer | partitioned table | postgres_limitless public | customer_fs1 | foreign table | postgres_limitless public | customer_fs2 | foreign table | postgres_limitless public | customer_fs3 | foreign table | postgres_limitless public | customer_fs4 | foreign table | postgres_limitless public | customer_fs5 | foreign table | postgres_limitless public | mytable2 | partitioned table | postgres_limitless public | mytable2_fs1 | foreign table | postgres_limitless public | mytable2_fs2 | foreign table | postgres_limitless public | mytable2_fs3 | foreign table | postgres_limitless public | mytable2_fs4 | foreign table | postgres_limitless public | mytable2_fs5 | foreign table | postgres_limitless (12 rows)

Membuat tabel referensi

Anda membuat tabel referensi dengan menjalankan rds_aurora.limitless_alter_table_type_reference prosedur pada tabel standar. Prosedur ini mereplikasi tabel yang diberikan ke semua pecahan dalam grup pecahan DB, dan mengubah jenis tabel menjadi referensi. Prosedur berjalan secara serempak, dan memperoleh ACCESS EXCLUSIVE kunci di atas meja.

Setelah prosedur selesai dengan sukses, tabel standar sumber dihapus, dan tabel referensi dengan nama yang sama menjadi tersedia.

rds_aurora.limitless_alter_table_type_referenceProsedur ini menggunakan sintaks berikut:

postgres=> CALL rds_aurora.limitless_alter_table_type_reference('schema.table');

Prosedur yang disimpan membutuhkan parameter berikut:

  • schema— Skema database yang berisi tabel yang akan direplikasi. Jika skema tidak ditentukan, prosedur menggunakan. search_path

  • table— Tabel yang akan direplikasi.

catatan

Tabel standar dari mana Anda membuat tabel referensi harus memiliki kunci utama.

Dalam tabel referensi, CHECK kendala tidak mendukung ekspresi.

Fungsi sebelumnya,limitless_table_alter_type_reference, sudah usang.

Untuk membuat tabel referensi

Contoh berikut menunjukkan cara membuat tabel zipcodes referensi.

  1. Buat tabel standar.

    CREATE TABLE zipcodes (zipcode INT PRIMARY KEY, details VARCHAR);
  2. Ubah tabel standar menjadi tabel referensi.

    CALL rds_aurora.limitless_alter_table_type_reference('public.zipcodes'); postgres=> \d List of relations Schema | Name | Type | Owner --------+--------------+-------------------+-------------------- public | customer | partitioned table | postgres_limitless public | customer_fs1 | foreign table | postgres_limitless public | customer_fs2 | foreign table | postgres_limitless public | customer_fs3 | foreign table | postgres_limitless public | customer_fs4 | foreign table | postgres_limitless public | customer_fs5 | foreign table | postgres_limitless public | zipcodes | foreign table | postgres_limitless (7 rows)

    Output menunjukkan tabel customer sharded dan tabel zipcodes referensi.