Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Konvertierung von Standardtabellen in unbegrenzt viele Tabellen
Sie können Standardtabellen in Sharded- oder Referenztabellen konvertieren. Während der Konvertierung werden Daten aus der Standardtabelle in die verteilte Tabelle verschoben. Anschließend wird die Quellstandardtabelle gelöscht. Daten werden mit dem INSERT INTO SELECT FROM
Befehl verschoben.
Sharded Tabellen erstellen
Sie erstellen Tabellen mit Sharding, indem Sie die rds_aurora.limitless_alter_table_type_sharded
Prozedur für Standardtabellen ausführen. Diese Prozedur verwendet eine Standardtabelle und eine Liste von Spalten und verteilt dann die angegebene Tabelle, wobei die Spaltenliste als Shard-Schlüssel verwendet wird. Die Prozedur wird synchron ausgeführt und erwirbt eine ACCESS EXCLUSIVE
Sperre für die Tabelle.
Nachdem die Prozedur erfolgreich abgeschlossen wurde, wird die Quellstandardtabelle gelöscht, und eine Shard-Tabelle mit demselben Namen wird verfügbar.
Die rds_aurora.limitless_alter_table_type_sharded
Prozedur verwendet die folgende Syntax:
postgres=>
CALL rds_aurora.limitless_alter_table_type_sharded('schema
.table
', ARRAY['shard_key1
', 'shard_key2
', ... 'shard_keyn
']);
Die Prozedur erfordert die folgenden Parameter:
-
schema
— Das Datenbankschema, das die Tabelle enthält, die geteilt werden soll. Wenn das Schema nicht angegeben ist, verwendet die Prozedur diesearch_path
. -
table
— Die Tabelle, die geteilt werden soll. -
shard_keyn
— Ein Array von Tabellenspalten, die als Shard-Schlüssel verwendet werden sollen.Shard-Schlüsselwerte sind Zeichenkettenliterale und unterscheiden daher zwischen Groß- und Kleinschreibung. Wenn ein Shard-Schlüssel ein einfaches Anführungszeichen (') enthält, verwenden Sie ein anderes einfaches Anführungszeichen, um es zu umgehen. Wenn beispielsweise eine Tabellenspalte benannt ist
customer's id
, verwenden Sie siecustomer''s id
als Shard-Schlüssel. Backslashes (\) und doppelte Anführungszeichen („) müssen nicht maskiert werden.
Anmerkung
Alle primären und eindeutigen Schlüssel müssen den Shard-Schlüssel enthalten. Das bedeutet, dass der Shard-Schlüssel eine Teilmenge des primären oder eindeutigen Schlüssels ist.
In Shard-Tabellen unterstützt die CHECK
Einschränkung keine Ausdrücke.
Weitere Informationen finden Sie unter Beschränkungen.
Um eine Tabelle mit Sharding zu erstellen
Das folgende Beispiel zeigt, wie die Sharded-Tabelle mit dem customer
Shard-Schlüssel erstellt wird. customer_id
-
Erstellen Sie die Standardtabelle.
CREATE TABLE customer (customer_id INT PRIMARY KEY NOT NULL, zipcode INT, email VARCHAR);
-
Konvertiert die Standardtabelle in eine Shard-Tabelle.
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)
Erstellen von zusammengestellten Tabellen
Wenn zwei oder mehr Tabellen mit demselben Shard-Schlüssel geteilt werden, können Sie diese Tabellen explizit anordnen (zusammenstellen). Wenn zwei oder mehr Tabellen zusammengelegt werden, werden Zeilen aus diesen Tabellen mit denselben Shard-Schlüsselwerten auf demselben Shard platziert. Die Kollokation hilft dabei, einige Operationen auf einen einzigen Shard zu beschränken, was zu einer besseren Leistung führt.
Sie verwenden das rds_aurora.limitless_alter_table_type_sharded
Verfahren mit der folgenden Syntax:
postgres=>
CALL rds_aurora.limitless_alter_table_type_sharded('schema
.collocated_table
', ARRAY['shard_key1
', 'shard_key2
', ... 'shard_keyn
'], 'schema
.sharded_table
');
Die Prozedur erfordert die folgenden Parameter:
-
schema
— Das Datenbankschema, das die Tabellen enthält, die zusammengestellt werden sollen. Wenn das Schema nicht angegeben ist, verwendet die Prozedur diesearch_path
. -
collocated_table
— Die Tabelle, die zusammengestellt werden soll. -
shard_keyn
— Ein Array von Tabellenspalten, die als Shard-Schlüssel verwendet werden sollen.Sie müssen denselben Shard-Schlüssel wie für die ursprüngliche Sharded-Tabelle verwenden, einschließlich derselben Spaltennamen und Spaltentypen.
-
sharded_table
— Die Sharded-Tabelle, mit der Sie die zusammenstellen.collocated_table
Um eine zusammengestellte Tabelle zu erstellen
-
Erstellen Sie die erste Sharding-Tabelle, indem Sie das Verfahren unter befolgen. Sharded Tabellen erstellen
-
Erstellen Sie die Standardtabelle für die zusammengestellte Tabelle.
CREATE TABLE mytable2 (customer_id INT PRIMARY KEY NOT NULL, column1 INT, column2 VARCHAR);
-
Konvertiert die Standardtabelle in eine zusammengestellte Tabelle.
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)
Referenztabellen erstellen
Sie erstellen Referenztabellen, indem Sie das rds_aurora.limitless_alter_table_type_reference
Verfahren für Standardtabellen ausführen. Dieses Verfahren repliziert eine bestimmte Tabelle auf alle Shards in der DB-Shard-Gruppe und ändert den Tabellentyp in Referenz. Die Prozedur wird synchron ausgeführt und erwirbt eine ACCESS EXCLUSIVE
Sperre für die Tabelle.
Nachdem die Prozedur erfolgreich abgeschlossen wurde, wird die Quellstandardtabelle gelöscht, und eine Referenztabelle mit demselben Namen wird verfügbar.
Die rds_aurora.limitless_alter_table_type_reference
Prozedur verwendet die folgende Syntax:
postgres=>
CALL rds_aurora.limitless_alter_table_type_reference('schema
.table
');
Die gespeicherte Prozedur erfordert die folgenden Parameter:
-
schema
— Das Datenbankschema, das die zu replizierende Tabelle enthält. Wenn das Schema nicht angegeben ist, verwendet die Prozedur diesearch_path
. -
table
— Die Tabelle, die repliziert werden soll.
Anmerkung
Die Standardtabelle, aus der Sie die Referenztabelle erstellen, muss einen Primärschlüssel haben.
In Referenztabellen unterstützt die CHECK
Einschränkung keine Ausdrücke.
Die vorherige Funktion,limitless_table_alter_type_reference
, ist veraltet.
Um eine Referenztabelle zu erstellen
Das folgende Beispiel zeigt, wie die zipcodes
Referenztabelle erstellt wird.
-
Erstellen Sie die Standardtabelle.
CREATE TABLE zipcodes (zipcode INT PRIMARY KEY, details VARCHAR);
-
Konvertiert die Standardtabelle in eine Referenztabelle.
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)Die Ausgabe zeigt die
customer
Sharded-Tabelle und diezipcodes
Referenztabelle.