이 페이지에서는 데이터베이스에서 분할 지점을 만들고 관리하는 방법을 설명합니다. 예상되는 트래픽 증가에 대비하기 위해 데이터베이스를 사전 분할하는 분할 지점을 만들 수 있습니다. 사전 분할에 관한 자세한 내용은 사전 분할 개요를 참고하세요.
시작하기 전에
- 
  
  
  
  
  
  
  
    
    
    
    
    
    
      
      
        
        
      
      
    
    
    
    
    
  
  
  
  
  
  
  
  
    
    
    
    
  
    
    
    
    
      
      
      
      
      
      
        
        
          
        
        
      
      
      
      
      
    
  
  
  분할 지점을 만들고 관리하는 데 필요한 권한을 얻으려면 관리자에게 인스턴스에 대한 Cloud Spanner 데이터베이스 관리자( roles/spanner.databaseAdmin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.이 사전 정의된 역할에는 분할 지점을 만들고 관리하는 데 필요한 spanner.databases.addSplitPoints권한이 포함되어 있습니다.
- 이 페이지의 gcloud CLI 예시에서는 다음 가정이 사용됩니다. - Spanner에 사용하도록 gcloud CLI를 설정했습니다. Spanner에서 gcloud CLI를 처음 사용하는 경우 gcloud CLI를 사용하여 데이터베이스 만들기 및 쿼리를 참조하세요.
- 프로젝트에 gcloud CLI를 구성했습니다. 예를 들면 다음과 같습니다. - gcloud config set core/project PROJECT_ID 
 
- 예상되는 트래픽 증가를 지원하기에 충분한 노드가 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: 분할을 추가할 객체 유형입니다. 유효한 값은 TABLE,INDEX입니다.
- ObjectName: 데이터베이스 테이블 또는 색인의 이름입니다.
- SplitValue1..N: 분할을 도입할 분할 지점 값입니다.
파일에서 분할 지점 값을 만들 때 다음 규칙을 따르세요.
- 문자열 값은 작은따옴표로 묶어야 합니다. 예를 들면 'splitKeyPart'입니다.
- 불리언 값은 true또는false여야 합니다.
- INT64및- NUMERICSpanner 데이터 유형 값은 작은따옴표로 묶어야 합니다. 예를 들면- '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=SPLITS_FILE \ --instance=INSTANCE_ID \ --split-expiration-date=EXPIRATION_DATE \ --initiator=INITIATOR
Windows(PowerShell)
gcloud spanner databases splits add DATABASE_ID ` --splits-file=SPLITS_FILE ` --instance=INSTANCE_ID ` --split-expiration-date=EXPIRATION_DATE ` --initiator=INITIATOR
Windows(cmd.exe)
gcloud spanner databases splits add DATABASE_ID ^ --splits-file=SPLITS_FILE ^ --instance=INSTANCE_ID ^ --split-expiration-date=EXPIRATION_DATE ^ --initiator=INITIATOR
REST v1
projects.instances.databases.addSplitPoints 메서드를 사용하여 분할 지점을 만들 수 있습니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID
- INSTANCE_ID: 인스턴스 ID
- DATABASE_ID: 데이터베이스 ID
HTTP 메서드 및 URL:
POST https://spanner.googleapis.com/v1/projects//instances/ /databases/ :addSplitPoints 
JSON 요청 본문:
{
  "split_points": [
    {
      "table": "T1",
      "index": "T1_IDX",
      "expire_time": "2023-04-22T10:00:20.021Z",
      "keys": [
        {
          "key_parts": {
            "values": [
              3
            ]
          }
        },
        {
          "key_parts": {
            "values": [
              10
            ]
          }
        }
      ]
    },
    {
      "table": "T2",
      "expire_time": "2023-04-22T10:00:20.021Z",
      "keys": [
        {
          "key_parts": {
            "values": [
              50
            ]
          }
        }
      ]
    }
  ]
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
성공 상태 코드(2xx)와 빈 응답을 받게 됩니다.
클라이언트 라이브러리
Go
Java
Node.js
Python
발생 가능한 오류 시나리오
다음 시나리오에서는 분할 지점을 만들 때 오류가 발생할 수 있습니다.
- 색인 수준 분할의 입력에 잘못된 테이블 이름이 있습니다.
- 테이블 수준 분할 지점에 2개 이상의 키가 있습니다.
- 색인 수준 분할 지점에 3개 이상의 키가 있습니다.
- 분할 지점은 데이터베이스 스키마에 정의되지 않은 테이블 또는 색인에 정의됩니다.
- 요청에 중복 분할 지점이 포함되어 있습니다.
할당량 및 한도에 대한 자세한 내용은 할당량 및 한도를 참조하세요.
분할 지점 보기
Google Cloud 콘솔 또는 gcloud CLI를 사용하여 데이터베이스에서 생성된 모든 분할 지점을 볼 수 있습니다.
콘솔
 Google Cloud 콘솔에서 SPANNER_SYS.USER_SPLIT_POINTS 뷰를 쿼리하여 분할 지점 수를 가져오려면 다음 단계를 따르세요.
- Spanner 인스턴스 페이지를 엽니다. 
- Spanner 인스턴스의 이름과 쿼리할 데이터베이스를 선택합니다. 
- 왼쪽 탐색 패널에서 Spanner 스튜디오를 클릭합니다. 
- 텍스트 필드에 다음 쿼리를 입력합니다. - SELECT * FROM SPANNER_SYS.USER_SPLIT_POINTS
- 쿼리 실행을 클릭합니다. 
다음과 유사한 결과가 표시됩니다.
| TABLE_NAME | INDEX_NAME | INITIATOR | SPLIT_KEY | EXPIRE_TIME | 
|---|---|---|---|---|
| T | CloudAddSplitPointsAPI | T(90,153,4,2024-04-30T17:00:00-07:00,1,2024-05-01,a) | 2025-03-06T09:58:58.007201Z | |
| T | T_IDX | CloudAddSplitPointsAPI | 색인: T의 T_IDX, 색인 키: (10), 기본 테이블 키: (<begin>,<begin>,<begin>,<begin>,<begin>,<begin>,<begin>) | 2025-03-08T07:33:23.861682Z | 
| T | T_IDX | CloudAddSplitPointsAPI | 색인: T의 T_IDX, 색인 키: (9091), 기본 테이블 키: (4567,123,4.2,2024-04-30T17:00:00-07:00,1,2024-05-01,a) | 2025-03-08T07:35:25.990007Z | 
gcloud
다음 gcloud CLI 명령어를 실행하여 데이터베이스의 분할 지점을 확인합니다.
  gcloud spanner databases splits list DATABASE_ID \
  --instance INSTANCE_ID
이 명령어를 실행할 때 다음 변수를 바꿉니다.
- INSTANCE_ID: Spanner 인스턴스 ID입니다.
- DATABASE_ID: Spanner 데이터베이스 ID입니다.
다음과 유사한 응답이 표시됩니다.
  TABLE_NAME: T
  INDEX_NAME:
  INITIATOR: CloudAddSplitPointsAPI
  SPLIT_KEY: T(90,153,4,2024-04-30T17:00:00-07:00,1,2024-05-01,a)
  EXPIRE_TIME: 2025-03-06T09:58:58.007201Z
  TABLE_NAME: T
  INDEX_NAME: T_IDX
  INITIATOR: CloudAddSplitPointsAPI
  SPLIT_KEY: Index: T_IDX on T, Index Key: (10), Primary Table Key: (<begin>,<begin>,<begin>,<begin>,<begin>,<begin>,<begin>)
  EXPIRE_TIME: 2025-03-08T07:33:23.861682Z
  TABLE_NAME: T
  INDEX_NAME: T_IDX
  INITIATOR: CloudAddSplitPointsAPI
  SPLIT_KEY: Index: T_IDX on T, Index Key: (9091), Primary Table Key: (4567,123,4.2,2024-04-30T17:00:00-07:00,1,2024-05-01,a)
  EXPIRE_TIME: 2025-03-08T07:35:25.990007Z
분할 지점을 만료하는 방법
만드는 각 분할 지점에 만료 시간을 설정할 수 있습니다. 자세한 내용은 분할 지점 만료를 참고하세요. Google Cloud CLI 또는 REST API를 사용하여 분할 지점을 만료할 수 있습니다.
gcloud
Google Cloud CLI에서 분할 지점을 만료하려면 만료하려는 모든 분할이 포함된 파일을 만들고 gcloud CLI 명령어에서 splits-file 파라미터를 사용하여 경로를 제공해야 합니다. 파일은 API 요청당 100개 지점의 API 한도를 초과해서는 안 됩니다. 자세한 내용은 할당량 및 한도를 참조하세요.
파일은 다음 형식을 사용하여 분할 지점을 지정해야 합니다.
  ObjectType ObjectName (SplitValue)
  ObjectType ObjectName (SplitValue)
  ObjectType ObjectName (SplitValue)
파일을 만들 때 다음 변수를 바꿉니다.
- ObjectType: 만료하려는 분할의 객체 유형입니다. 유효한 값은 TABLE,INDEX입니다.
- ObjectName: 데이터베이스 테이블 또는 색인의 이름입니다.
- SplitValue: 만료하려는 분할 지점 값입니다.
파일에서 분할 지점 값을 만들 때 다음 규칙을 따르세요.
- 문자열 값은 작은따옴표로 묶어야 합니다. 예를 들면 'splitKeyPart'입니다.
- 불리언 값은 true또는false일 수 있습니다.
- INT64및- NUMERICSpanner 데이터 유형 값은 작은따옴표로 묶어야 합니다. 예를 들면- '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,'7ef9db22-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=SPLITS_FILE \ --instance=INSTANCE_ID \ --split-expiration-date=EXPIRATION_DATE \ --initiator=INITIATOR
Windows(PowerShell)
gcloud spanner databases splits add DATABASE_ID ` --splits-file=SPLITS_FILE ` --instance=INSTANCE_ID ` --split-expiration-date=EXPIRATION_DATE ` --initiator=INITIATOR
Windows(cmd.exe)
gcloud spanner databases splits add DATABASE_ID ^ --splits-file=SPLITS_FILE ^ --instance=INSTANCE_ID ^ --split-expiration-date=EXPIRATION_DATE ^ --initiator=INITIATOR
REST v1
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 프로젝트 ID
- INSTANCE_ID: 인스턴스 ID
- DATABASE_ID: 데이터베이스 ID
HTTP 메서드 및 URL:
POST https://spanner.googleapis.com/v1/projects//instances/ /databases/ :addSplitPoints 
JSON 요청 본문:
{
  "split_points": [
    {
      "table": "T1",
      "index": "T1_IDX",
      "expire_time": "2023-04-22T10:00:20.021Z",
      "keys": [
        {
          "key_parts": {
            "values": [
              3
            ]
          }
        },
        {
          "key_parts": {
            "values": [
              10
            ]
          }
        }
      ]
    },
    {
      "table": "T2",
      "expire_time": "2023-04-22T10:00:20.021Z",
      "keys": [
        {
          "key_parts": {
            "values": [
              50
            ]
          }
        }
      ]
    }
  ]
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
성공 상태 코드(2xx)와 빈 응답을 받게 됩니다.