

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

# Aurora DSQL 的主索引鍵
<a name="working-with-primary-keys"></a>

在 Aurora DSQL 中，主索引鍵是實際整理資料表資料的功能。其類似 PostgreSQL 的 `CLUSTER` 操作，或其他資料庫的叢集索引。當您定義主索引鍵時，Aurora DSQL 會建立包含資料表中所有資料欄的索引。Aurora DSQL 中的主索引鍵結構可確保有效的資料存取和管理。

## 資料結構和儲存
<a name="dsql-primary-key-storage"></a>

當您定義主索引鍵時，Aurora DSQL 會按照主索引鍵順序存放資料表資料。這種索引組織結構可讓主索引鍵查詢直接擷取所有資料欄值，而不用像傳統 B 型樹狀結構索引一樣遵循資料指標。PostgreSQL 的 `CLUSTER` 操作只會重新整理一次資料；不同的是，Aurora DSQL 會自動且持續地維護此順序。此方法可改善依賴主索引鍵存取的查詢效能。

Aurora DSQL 也會使用主索引鍵，為資料表和索引中的每個資料列產生整個叢集的唯一索引鍵。此唯一索引鍵也支援分散式資料管理。其可自動分割多個節點的資料，支援可擴展的儲存和高度並行。因此，主索引鍵結構可協助 Aurora DSQL 自動擴展並有效管理並行工作負載。

## 選擇主索引鍵的準則
<a name="dsql-primary-key-guidelines"></a>

在 Aurora DSQL 中選擇和使用主索引鍵時，請考慮下列準則：
+ 在建立資料表時定義主索引鍵。您稍後無法變更此索引鍵或新增新的主索引鍵。主索引鍵會成為整個叢集的索引鍵的一部分，用於資料分割和自動擴展寫入輸送量。如果您未指定主索引鍵，Aurora DSQL 會指派合成的隱藏 ID。
+ 若是具大量寫入的資料表，請避免使用單調遞增的整數作為主索引鍵。這可能會將所有新的插入導向單一分割區，而造成效能問題。反之，請使用隨機分佈的主索引鍵，以確保寫入平均分佈至各儲存分割區。
+ 若是不常變更或唯讀的資料表，您可以使用遞增索引鍵。時間戳記或序號就是遞增索引鍵的範例。密集索引鍵有許多緊密間隔或重複的值。即使是密集索引鍵，您也可以使用遞增金鑰，因為寫入效能較不重要。
+ 如果完整資料表掃描不符合您的效能需求，請選擇更有效率的存取方法。在大多數情況下，這表示您使用的主索引鍵應符合查詢中最常見的聯結和查詢索引鍵。
+ 主索引鍵中資料欄合併後的大小上限為 1 KiB。如需詳細資訊，請參閱 [Aurora DSQL 資料庫限制](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/CHAP_quotas.html#SECTION_database-limits)和 [Aurora DSQL 支援的資料類型](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/working-with-postgresql-compatibility-supported-data-types)。
+ 您可以在主索引鍵或次要索引中包含最多 8 個資料欄。如需詳細資訊，請參閱 [Aurora DSQL 資料庫限制](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/CHAP_quotas.html#SECTION_database-limits)和 [Aurora DSQL 支援的資料類型](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/working-with-postgresql-compatibility-supported-data-types)。