Criação de tabelas ilimitadas usando variáveis
Você pode usar variáveis para criar tabelas fragmentadas e de referência definindo o modo de criação de tabela. As tabelas criadas usarão esse modo até que você defina um modo diferente.
Use as seguintes variáveis para criar tabelas fragmentadas e de referência:
-
rds_aurora.limitless_create_table_mode
: defina essa variável de sessão comosharded
oureference
. O valor padrão da variável éstandard
. -
rds_aurora.limitless_create_table_shard_key
: defina essa variável de sessão como uma matriz de nomes de colunas para usar como chaves de fragmento. Essa variável é ignorada quandords_aurora.limitless_create_table_mode
não ésharded
.Formate o valor como
untyped array literal
, semelhante a quando você insere literais em uma coluna de matriz. Para obter mais informações, consulte Matrizesna documentação do PostgreSQL. -
rds_aurora.limitless_create_table_collocate_with
: defina essa variável de sessão com um nome de tabela específico para colocar tabelas recém-criadas com essa tabela.Se duas ou mais tabelas forem fragmentadas usando a mesma chave de fragmento, você poderá alinhar (colocalizar) explicitamente essas tabelas. Quando duas ou mais tabelas são colocalizadas, as linhas dessas tabelas com os mesmos valores de chave de fragmento são colocadas no mesmo fragmento. A colocalização ajuda a restringir algumas operações a um único fragmento, o que resulta em melhor desempenho.
nota
Todas as chaves primárias e únicas devem incluir a chave de fragmento. Isso significa que a chave de fragmento é um subconjunto da chave primária ou única.
As tabelas ilimitadas têm algumas limitações. Para ter mais informações, consulte Limitações de DDL e outras informações do Aurora PostgreSQL Limitless Database.
Tópicos
Exemplos usando variáveis para criar tabelas ilimitadas
Os exemplos a seguir mostram como usar essas variáveis para criar tabelas fragmentadas e de referência.
Crie uma tabela fragmentada chamada items
, com o id
da a chave de fragmento.
BEGIN; SET LOCAL rds_aurora.limitless_create_table_mode='sharded'; SET LOCAL rds_aurora.limitless_create_table_shard_key='{"id"}'; CREATE TABLE items(id int, val int, item text); COMMIT;
Crie uma tabela fragmentada chamada items
, com uma chave de fragmento composta pelas colunas item_id
e item_cat
.
BEGIN; SET LOCAL rds_aurora.limitless_create_table_mode='sharded'; SET LOCAL rds_aurora.limitless_create_table_shard_key='{"item_id", "item_cat"}'; CREATE TABLE items(item_id int, item_cat varchar, val int, item text); COMMIT;
Crie uma tabela fragmentada chamada item_description
, com uma chave de fragmento composta pelas colunas item_id
e item_cat
, e colocalize-a com a tabela items
do exemplo anterior.
BEGIN; SET LOCAL rds_aurora.limitless_create_table_mode='sharded'; SET LOCAL rds_aurora.limitless_create_table_shard_key='{"item_id", "item_cat"}'; SET LOCAL rds_aurora.limitless_create_table_collocate_with='items'; CREATE TABLE item_description(item_id int, item_cat varchar, color_id int); COMMIT;
Crie uma tabela de referência chamada colors
.
BEGIN; SET LOCAL rds_aurora.limitless_create_table_mode='reference'; CREATE TABLE colors(color_id int primary key, color varchar); COMMIT;
Para redefinir a variável de sessão rds_aurora.limitless_create_table_mode
como standard
, use a seguinte declaração:
RESET rds_aurora.limitless_create_table_mode;
Depois de redefinir essa variável, as tabelas são criadas como tabelas padrão, que é o padrão. Para obter mais informações sobre tabelas padrão, consulte Converter tabelas padrão em tabelas ilimitadas.
Visualizações de tabelas de banco de dados Aurora PostgreSQL Limitless
Para obter informações sobre as tabelas do Limitless Database, use as visualizações a seguir.
- rds_aurora.limitless_tables
-
A visualização
rds_aurora.limitless_tables
contém informações sobre tabelas ilimitadas e seus tipos.postgres_limitless=> SELECT * FROM rds_aurora.limitless_tables; table_gid | local_oid | schema_name | table_name | table_status | table_type | distribution_key -----------+-----------+-------------+-------------+--------------+-------------+------------------ 5 | 18635 | public | standard | active | standard | 6 | 18641 | public | ref | active | reference | 7 | 18797 | public | orders | active | sharded | HASH (order_id) 2 | 18579 | public | customer | active | sharded | HASH (cust_id) (4 rows)
- rds_aurora.limitless_table_collocations
-
A visualização
rds_aurora.limitless_table_collocations
contém informações sobre tabelas fragmentadas colocalizadas. Por exemplo, as tabelasorders
ecustomers
são colocalizadas e têm o mesmocollocation_id
. As tabelasusers
efollowers
são colocalizadas e têm o mesmocollocation_id
.postgres_limitless=> SELECT * FROM rds_aurora.limitless_table_collocations ORDER BY collocation_id; collocation_id | schema_name | table_name ----------------+-------------+------------ 16002 | public | orders 16002 | public | customers 16005 | public | users 16005 | public | followers (4 rows)
- rds_aurora.limitless_table_collocation_distributions
-
A visualização
rds_aurora.limitless_table_collocation_distributions
mostra a distribuição de chaves para cada colocalização.postgres_limitless=> SELECT * FROM rds_aurora.limitless_table_collocation_distributions ORDER BY collocation_id, lower_bound; collocation_id | subcluster_id | lower_bound | upper_bound ----------------+---------------+----------------------+---------------------- 16002 | 6 | -9223372036854775808 | -4611686018427387904 16002 | 5 | -4611686018427387904 | 0 16002 | 4 | 0 | 4611686018427387904 16002 | 3 | 4611686018427387904 | 9223372036854775807 16005 | 6 | -9223372036854775808 | -4611686018427387904 16005 | 5 | -4611686018427387904 | 0 16005 | 4 | 0 | 4611686018427387904 16005 | 3 | 4611686018427387904 | 9223372036854775807 (8 rows)