

# 使用变量创建无限表
<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>

以下示例演示了如何使用这些变量创建分片表和引用表。

创建一个名为 `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;
```

创建一个名为 `items` 的分片表，其分片键由 `item_id` 和 `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;
```

创建一个名为 `item_description` 的分片表，其分片键由 `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"}';
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\$1aurora.limitless\$1tables**  
该 `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\$1aurora.limitless\$1table\$1collocations**  
该 `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\$1aurora.limitless\$1table\$1collocation\$1distributions**  
`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)
```