本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用變數建立無限資料表
您可以使用變數來建立碎片和參考資料表,方法是設定資料表建立模式。然後,您建立的資料表將使用此模式,直到您設定不同的模式為止。
使用下列變數來建立碎片和參考資料表:
-
rds_aurora.limitless_create_table_mode
– 將此工作階段變數設定為sharded
或reference
。此變數的預設值為standard
。 -
rds_aurora.limitless_create_table_shard_key
– 將此工作階段變數設定為資料欄名稱陣列,以用作碎片索引鍵。當rds_aurora.limitless_create_table_mode
不是 時,會忽略此變數sharded
。將值格式化為
untyped array literal
,類似於將常值插入陣列欄時。如需詳細資訊,請參閱 PostgreSQL 文件中的陣列。 -
rds_aurora.limitless_create_table_collocate_with
– 將此工作階段變數設定為特定資料表名稱,以將新建立的資料表與該資料表串連。如果使用相同的碎片索引鍵分割兩個以上的資料表,您可以明確對齊 (串連) 這些資料表。當兩個或多個資料表共置時,具有相同碎片索引鍵值的資料表資料列會放置在相同的碎片上。Collocation 有助於將某些操作限制為單一碎片,進而獲得更好的效能。
注意
所有主要金鑰和唯一金鑰都必須包含碎片金鑰。這表示碎片金鑰是主要金鑰或唯一金鑰的子集。
無限資料表有一些限制。如需詳細資訊,請參閱Aurora PostgreSQL 無限資料庫的 DDL 限制和其他資訊。
使用變數建立無限資料表的範例
下列範例示範如何使用這些變數來建立碎片和參考資料表。
items
使用碎片索引鍵 建立名為 的碎片資料表id
。
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;
使用由 item_id
和 item_cat
資料欄組成的碎片索引鍵items
,建立名為 的碎片資料表。
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;
使用由 item_id
和 item_cat
欄組成的item_description
碎片索引鍵建立名為 的碎片資料表,並將其與上一個範例中的items
資料表串連。
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;
建立名為 的參考資料表colors
。
BEGIN; SET LOCAL rds_aurora.limitless_create_table_mode='reference'; CREATE TABLE colors(color_id int primary key, color varchar); COMMIT;
若要將rds_aurora.limitless_create_table_mode
工作階段變數重設為 standard
,請使用下列陳述式:
RESET rds_aurora.limitless_create_table_mode;
重設此變數之後,資料表會建立為標準資料表,這是預設值。如需標準資料表的詳細資訊,請參閱 將標準資料表轉換為無限資料表。
Aurora PostgreSQL 無限資料庫資料表檢視
您可以使用下列檢視來尋找無限資料庫資料表的相關資訊。
- rds_aurora.limitless_tables
-
rds_aurora.limitless_tables
檢視包含無限資料表及其類型的相關資訊。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
-
rds_aurora.limitless_table_collocations
檢視包含有關並行碎片資料表的資訊。例如,orders
和customers
資料表是共置的,並且具有相同的collocation_id
。users
和followers
資料表是共置的,並且具有相同的collocation_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
-
rds_aurora.limitless_table_collocation_distributions
會顯示每個 託管的金鑰分佈。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)