创建和管理拆分点

本页面介绍了如何在数据库中创建和管理拆分点。您可以创建拆分点来预先拆分数据库,以便为预期的流量增长做好准备。 如需详细了解预先拆分,请参阅预先拆分概览

准备工作

  • 如需获得创建和管理拆分点所需的权限,请让您的管理员为您授予实例的 Cloud Spanner Database Admin (roles/spanner.databaseAdmin) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

    此预定义角色包含创建和管理拆分点所需的 spanner.databases.addSplitPoints 权限。

    您也可以使用自定义角色或其他预定义角色来获取此权限。

  • 本页面中的 gcloud CLI 示例进行如下假设:

  • 确保您的 Spanner 实例具有足够的节点来支持预期的流量增长。如需了解详情,请参阅预拆分概览

创建拆分点

您可以使用 Google Cloud CLI 或 REST API 创建拆分点。

gcloud

如果您想使用 Google Cloud CLI 创建拆分点,则需要创建一个包含所有拆分的文件,并在 gcloud CLI 命令中提供路径。文件不得超过每个 API 请求 100 个点的 API 限制。如需了解详情,请参阅配额和限制

该文件必须使用以下格式指定拆分点:

  ObjectType ObjectName (SplitValue1)
  ObjectType ObjectName (SplitValue2)
  ObjectType ObjectName (SplitValueN)

创建文件时,请替换以下变量:

  • ObjectType:要添加拆分的对象类型。有效值为 TABLEINDEX
  • ObjectName:数据库表或索引的名称。
  • SplitValue1..N:要在其位置处引入拆分的拆分点值。

在文件中创建拆分点值时,请使用以下规则:

  • 字符串值需要用单引号引起来。例如 'splitKeyPart'
  • 布尔值必须是 truefalse
  • INT64NUMERIC Spanner 数据类型值需要用单引号引起来。例如 '123''99.99'
  • 所有其他数字值都不需要用单引号引起来。例如 1.287
  • 时间戳值应采用 '2020-06-18T17:24:53Z' 格式,并用单引号引起来。
  • 拆分值需要用括号括起来。
  • 拆分键值的顺序必须与主键顺序相同。
  • 如果拆分值需要包含逗号,您必须使用 `\` 字符转义逗号。
  • 对于拆分索引,您可以提供索引键或整个索引和完整的表键。
  • 指定拆分点时,您必须始终使用完整键。

以下示例文件展示了如何指定拆分点:

  TABLE Singers ('c32ca57a-786c-2268-09d4-95182a9930be')
  TABLE Singers ('bb98c7e2-8240-b780-346d-c5d63886594a')
  INDEX Order ('5b8bac71-0cb2-95e9-e1b0-89a027525460')
  TABLE Payment ('6cf41f21-2d77-318f-c504-816f0068db8b')
  INDEX Indx_A (2152120141932780000)
  TABLE TableD  (0,'7ef9d̦b22-d0e5-6041-8937-4bc6a7ef9db2')
  INDEX IndexXYZ ('8762203435012030000',NULL,NULL)
  INDEX IndexABC  (0, '2020-06-18T17:24:53Z', '2020-06-18T17:24:53Z') TableKey
  (123,'ab\,c')

在使用下面的命令数据之前,请先进行以下替换:

  • SPLITS_FILE:拆分文件的路径。
  • INSTANCE_ID:实例 ID。
  • DATABASE_ID:数据库 ID。
  • EXPIRATION_DATE:(可选)拆分点的失效日期。接受 '2020-06-18T17:24:53Z' 格式的时间戳。
  • INITIATOR:(可选)拆分点的发起者。

执行以下命令:

Linux、macOS 或 Cloud Shell

gcloud spanner databases splits add DATABASE_ID \
--splits-file=