Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Conversione di tabelle standard in tabelle illimitate
È possibile convertire le tabelle standard in tabelle frammentate o di riferimento. Durante la conversione, i dati vengono spostati dalla tabella standard alla tabella distribuita, quindi la tabella standard di origine viene eliminata. I dati vengono spostati utilizzando il INSERT INTO SELECT FROM
comando.
Indice
Creazione di tabelle condivise
È possibile creare tabelle ripartite eseguendo la rds_aurora.limitless_alter_table_type_sharded
procedura su tabelle standard. Questa procedura richiede una tabella standard e un elenco di colonne, quindi distribuisce la tabella data utilizzando l'elenco di colonne come chiave condivisa. La procedura viene eseguita in modo sincrono e acquisisce un ACCESS EXCLUSIVE
blocco sulla tabella.
Al termine della procedura, la tabella standard di origine viene eliminata e diventa disponibile una tabella condivisa con lo stesso nome.
La rds_aurora.limitless_alter_table_type_sharded
procedura utilizza la seguente sintassi:
postgres=>
CALL rds_aurora.limitless_alter_table_type_sharded('schema
.table
', ARRAY['shard_key1
', 'shard_key2
', ... 'shard_keyn
']);
La procedura richiede i seguenti parametri:
-
schema
— Lo schema del database che contiene la tabella da condividere. Se lo schema non è specificato, la procedura utilizza ilsearch_path
. -
table
— La tabella da dividere. -
shard_keyn
— Una matrice di colonne della tabella da utilizzare come chiave shard.I valori delle chiavi dello shard sono stringhe letterali e pertanto fanno distinzione tra maiuscole e minuscole. Se una chiave shard contiene una virgoletta singola ('), usa un'altra virgoletta singola per evitarla. Ad esempio, se viene denominata una colonna della tabella
customer's id
, usalacustomer''s id
come chiave shard. Non è necessario che le barre rovesciate (\) e le virgolette doppie («) siano sfuggite.
Nota
Tutte le chiavi primarie e uniche devono includere la chiave shard. Ciò significa che la chiave shard è un sottoinsieme della chiave primaria o unica.
Nelle tabelle suddivise, il CHECK
vincolo non supporta le espressioni.
Per ulteriori informazioni, consulta Vincoli.
Per creare una tabella condivisa
L'esempio seguente mostra come creare la tabella customer
condivisa con la chiave shard. customer_id
-
Create la tabella standard.
CREATE TABLE customer (customer_id INT PRIMARY KEY NOT NULL, zipcode INT, email VARCHAR);
-
Converte la tabella standard in una tabella condivisa.
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)
Creazione di tabelle collocate
Se due o più tabelle vengono suddivise utilizzando la stessa chiave shard, è possibile allineare (collocare) in modo esplicito tali tabelle. Quando vengono collocate due o più tabelle, le righe di tali tabelle con gli stessi valori della chiave dello shard vengono posizionate sullo stesso frammento. La collocazione aiuta a limitare alcune operazioni a un singolo shard, il che si traduce in prestazioni migliori.
Si utilizza la rds_aurora.limitless_alter_table_type_sharded
procedura con la seguente sintassi:
postgres=>
CALL rds_aurora.limitless_alter_table_type_sharded('schema
.collocated_table
', ARRAY['shard_key1
', 'shard_key2
', ... 'shard_keyn
'], 'schema
.sharded_table
');
La procedura richiede i seguenti parametri:
-
schema
— Lo schema del database che contiene le tabelle da collocare. Se lo schema non è specificato, la procedura utilizza ilsearch_path
. -
collocated_table
— La tabella da collocare. -
shard_keyn
— Una matrice di colonne della tabella da usare come chiave shard.È necessario utilizzare la stessa chiave shard della tabella condivisa originale, inclusi gli stessi nomi di colonna e tipi di colonna.
-
sharded_table
— La tabella condivisa con cui stai collocando il.collocated_table
Per creare una tabella collocata
-
Creare la prima tabella condivisa seguendo la procedura riportata in. Creazione di tabelle condivise
-
Crea la tabella standard per la tabella collocata.
CREATE TABLE mytable2 (customer_id INT PRIMARY KEY NOT NULL, column1 INT, column2 VARCHAR);
-
Converte la tabella standard in una tabella collocata.
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)
Creazione di tabelle di riferimento
È possibile creare tabelle di riferimento eseguendo la rds_aurora.limitless_alter_table_type_reference
procedura su tabelle standard. Questa procedura replica una determinata tabella in tutti gli shard del gruppo di shard DB e modifica il tipo di tabella in riferimento. La procedura viene eseguita in modo sincrono e acquisisce un ACCESS EXCLUSIVE
blocco sulla tabella.
Al termine della procedura, la tabella standard di origine viene eliminata e diventa disponibile una tabella di riferimento con lo stesso nome.
La rds_aurora.limitless_alter_table_type_reference
procedura utilizza la seguente sintassi:
postgres=>
CALL rds_aurora.limitless_alter_table_type_reference('schema
.table
');
La stored procedure richiede i seguenti parametri:
-
schema
— Lo schema del database che contiene la tabella da replicare. Se lo schema non è specificato, la procedura utilizza ilsearch_path
. -
table
— La tabella da replicare.
Nota
La tabella standard da cui si crea la tabella di riferimento deve avere una chiave primaria.
Nelle tabelle di riferimento, il CHECK
vincolo non supporta le espressioni.
La funzione precedente,limitless_table_alter_type_reference
, è obsoleta.
Per creare una tabella di riferimento
L'esempio seguente mostra come creare la tabella zipcodes
di riferimento.
-
Create la tabella standard.
CREATE TABLE zipcodes (zipcode INT PRIMARY KEY, details VARCHAR);
-
Converte la tabella standard in una tabella di riferimento.
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)L'output mostra la tabella
customer
frammentata e la tabellazipcodes
di riferimento.