

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用變數建立無限資料表
<a name="limitless-creating-config"></a>

您可以設定資料表建立模式，使用變數來建立碎片和參考資料表。然後，您建立的資料表將使用此模式，直到設定不同的模式為止。

使用下列變數，來建立碎片和參考資料表：
+ `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 文件中的[陣列](https://www.postgresql.org/docs/current/arrays.html)。
+ `rds_aurora.limitless_create_table_collocate_with`：將此工作階段變數設為特定資料表名稱，以將新建立的資料表與該資料表共置。

  如果使用相同的碎片索引鍵分割二或多個資料表，您可以將那些資料表明確對齊 (共置)。將二或多個資料表共置時，會將具有相同碎片索引鍵值的資料表中的列放置在相同的碎片。共置有助於將某些操作限制為單一碎片，進而獲得更好的效能。

**注意**  
所有主要和唯一索引鍵都必須包含碎片索引鍵。這表示碎片索引鍵是主要或唯一索引鍵的子集。  
無限資料表有一些限制。如需詳細資訊，請參閱[Aurora PostgreSQL Limitless Database 的 DDL 限制和其他資訊](limitless-reference.DDL-limitations.md)。

**Topics**
+ [使用變數建立無限資料表的範例](#limitless-tables-examples)
+ [Aurora PostgreSQL Limitless Database 資料表檢視](#limitless-table-views)

## 使用變數建立無限資料表的範例
<a name="limitless-tables-examples"></a>

下列範例示範如何使用這些變數來建立碎片和參考資料表。

使用碎片索引鍵 `id` 建立名為 `items` 的碎片資料表。

```
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;
```

重設此變數之後，系統會將資料表建立為標準資料表，這是預設值。如需標準資料表的詳細資訊，請參閱[將標準資料表轉換為無限資料表](limitless-converting-standard.md)。

## Aurora PostgreSQL Limitless Database 資料表檢視
<a name="limitless-table-views"></a>

您可以使用下列檢視，來尋找 Limitless Database 資料表的相關資訊。

**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)
```