정보 스키마

정보 스키마는 모든 Cloud Spanner 데이터베이스에 공통된 기본 제공 스키마입니다. INFORMATION_SCHEMA의 테이블에 대해 SQL 쿼리를 실행하여 데이터베이스의 스키마 메타데이터를 가져올 수 있습니다.

예를 들어 다음 쿼리는 데이터베이스의 모든 사용자 정의 테이블 이름을 가져옵니다.

SELECT
  table_name
FROM
  information_schema.tables
WHERE
  table_catalog = '' and table_schema = ''

사용

  • INFORMATION_SCHEMA 데이터는 SQL 인터페이스를 통해서만 사용할 수 있습니다. (예 : executeQuery 그리고 gcloud spanner databases execute-sql ); Cloud Spanner의 다른 단일 읽기 메서드는 INFORMATION_SCHEMA을 지원하지 않습니다.
  • INFORMATION_SCHEMA에 대한 쿼리를 읽기 전용 트랜잭션에서 사용할 수 있지만 읽기-쓰기 트랜잭션에서는 사용할 수 없습니다.
  • INFORMATION_SCHEMA에 대한 쿼리는 강력, 제한된 비활성 또는 완전 비활성 타임스탬프 경계를 사용할 수 있습니다.

스키마의 테이블

SCHEMATA

INFORMATION_SCHEMA.SCHEMATA 테이블에는 데이터베이스의 스키마가 나열됩니다. 여기에는 사용자가 정의한 테이블이 있는 정보 스키마와 이름이 없는 스키마(이하 '기본 스키마')가 포함됩니다.

열 이름 유형 설명
CATALOG_NAME STRING 카탈로그의 이름입니다. SQL 표준 정보 스키마 테이블과의 호환성을 위해 있는 열입니다. 이 열은 항상 빈 문자열입니다.
SCHEMA_NAME STRING 스키마의 이름입니다. 이 열은 기본 스키마의 경우 비어 있고 이름이 지정된 스키마의 경우 비어 있지 않습니다.

INFORMATION_SCHEMA.DATABASE_OPTIONS

이 테이블에는 데이터베이스에 설정된 옵션이 나열됩니다.

열 이름 유형 설명
CATALOG_NAME STRING 카탈로그의 이름입니다. 항상 빈 문자열입니다.
SCHEMA_NAME STRING 스키마의 이름입니다. 이름이 지정되지 않은 경우 빈 문자열입니다.
OPTION_NAME STRING 데이터베이스 옵션의 이름입니다.
OPTION_TYPE STRING 데이터베이스 옵션의 데이터 유형입니다.
OPTION_VALUE STRING 데이터베이스 옵션 값입니다.

INFORMATION_SCHEMA.TABLES

이 테이블에는 스키마의 테이블이 나열됩니다.

열 이름 유형 설명
TABLE_CATALOG STRING 카탈로그의 이름입니다. 항상 빈 문자열입니다.
TABLE_SCHEMA STRING 스키마의 이름입니다. 이름이 지정되지 않은 경우 빈 문자열입니다.
TABLE_NAME STRING 테이블의 이름입니다.
PARENT_TABLE_NAME STRING 이 테이블이 인터리브 처리된 경우 상위 테이블의 이름이고 그렇지 않은 경우 NULL입니다.
ON_DELETE_ACTION STRING 인터리브 처리된 테이블의 경우 CASCADE 또는 NO ACTION으로 설정되고 그렇지 않으면 NULL로 설정됩니다. 자세한 내용은 테이블 문을 참조하세요.
SPANNER_STATE STRING 대량 작업이 포함된 경우 테이블은 만들기 중 여러 상태를 통과할 수 있습니다. 예를 들어 색인 백필이 필요한 외래 키로 테이블이 생성될 때 가능한 상태는 다음과 같습니다.
  • ADDING_FOREIGN_KEY: 테이블의 외래 키를 추가합니다.
  • WAITING_FOR_COMMIT: 스키마 변경을 완료합니다.
  • COMMITTED: 테이블을 만들기 위한 스키마 변경이 커밋되었습니다. 변경 사항이 커밋될 때까지 테이블에 쓸 수 없습니다.

INFORMATION_SCHEMA.COLUMNS

이 테이에는 테이블의 열이 나열됩니다.

열 이름 유형 설명
TABLE_CATALOG STRING 카탈로그의 이름입니다. 항상 빈 문자열입니다.
TABLE_SCHEMA STRING 스키마의 이름입니다. 이름이 지정되지 않은 경우 빈 문자열입니다.
TABLE_NAME STRING 테이블의 이름입니다.
COLUMN_NAME STRING 열의 이름입니다.
ORDINAL_POSITION INT64 테이블에서 열의 서수 위치이며 값 1부터 시작합니다.
COLUMN_DEFAULT BYTES SQL 표준을 충족하기 위해 포함되었습니다. 항상 NULL입니다.
DATA_TYPE STRING SQL 표준을 충족하기 위해 포함되었습니다. 항상 NULL입니다.
IS_NULLABLE STRING 이 열에서 null을 사용할 수 있는지를 나타내는 문자열입니다. SQL 표준에 따라 이 문자열은 부울 값이 아닌 YES 또는 NO입니다.
SPANNER_TYPE STRING 열의 데이터 유형입니다.

INFORMATION_SCHEMA.TABLE_CONSTRAINTS

이 테이블에는 데이터베이스의 테이블에 대해 정의된 각 제약조건에 대한 행 하나가 포함됩니다.

열 이름 유형 설명
CONSTRAINT_CATALOG STRING 항상 빈 문자열입니다.
CONSTRAINT_SCHEMA STRING 제약조건 스키마의 이름입니다. 이름이 지정되지 않은 경우 빈 문자열입니다.
CONSTRAINT_NAME STRING 제약조건의 이름입니다.
TABLE_CATALOG STRING 제한된 테이블의 카탈로그 이름입니다. 항상 빈 문자열입니다.
TABLE_SCHEMA STRING 제한된 테이블의 스키마 이름입니다. 이름이 지정되지 않은 경우 빈 문자열입니다.
TABLE_NAME STRING 제한된 테이블의 이름입니다.
CONSTRAINT_TYPE STRING 제약조건의 유형입니다. 가능한 값은 다음과 같습니다.
  • PRIMARY KEY
  • FOREIGN KEY
  • UNIQUE
IS_DEFERRABLE STRING 항상 NO입니다.
INITIALLY_DEFERRED STRING 항상 NO입니다.
ENFORCED STRING 항상 YES입니다.

INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE

이 테이블에는 제약 조건을 정의하거나 제약조건에 사용하는 테이블이 나와 있습니다. PRIMARY KEYUNIQUE 제약조건을 정의하는 테이블을 포함합니다. FOREIGN KEY 정의의 참조되는 테이블도 포함합니다.

열 이름 유형 설명
TABLE_CATALOG STRING 제한된 테이블의 카탈로그 이름입니다. 항상 빈 문자열입니다.
TABLE_SCHEMA STRING 제한된 테이블의 스키마 이름입니다. 이름이 지정되지 않은 경우 빈 문자열입니다.
TABLE_NAME STRING 제한된 테이블의 이름입니다.
CONSTRAINT_CATALOG STRING 제약조건 카탈로그의 이름입니다. 항상 빈 문자열입니다.
CONSTRAINT_SCHEMA STRING 제약조건 스키마의 이름입니다. 이름이 지정되지 않은 경우 빈 문자열입니다.
CONSTRAINT_NAME STRING 제약조건의 이름입니다.

INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS

이 테이블에는 각 FOREIGN KEY 제약조건에 대해 하나의 행이 포함됩니다.

열 이름 유형 설명
CONSTRAINT_CATALOG STRING FOREIGN KEY 카탈로그의 이름입니다. 항상 빈 문자열입니다.
CONSTRAINT_SCHEMA STRING FOREIGN KEY 스키마의 이름입니다. 이름이 지정되지 않은 경우 빈 문자열입니다.
CONSTRAINT_NAME STRING 외래 키의 이름입니다.
UNIQUE_CONSTRAINT_CATALOG STRING FOREIGN KEY 참조의 PRIMARY KEY 또는 UNIQUE 제약조건의 카탈로그 이름입니다. 항상 빈 문자열입니다.
UNIQUE_CONSTRAINT_SCHEMA STRING 기본 키 또는 고유 제약조건 외래 키 참조의 스키마 이름입니다. 이름이 지정되지 않은 경우 빈 문자열입니다.
UNIQUE_CONSTRAINT_NAME STRING 기본 키 또는 고유 제약조건 외래 키 참조의 이름입니다.
MATCH_OPTION STRING 항상 SIMPLE입니다.
UPDATE_RULE STRING 항상 NO ACTION입니다.
DELETE_RULE STRING 항상 NO ACTION입니다.
SPANNER_STATE STRING 외래 키의 현재 상태입니다. 외래 키의 지원 색인이 생성되고 백필될 때까지 Spanner에서 제약조건 적용이 시작되지 않습니다. 색인이 준비되면 Spanner가 기존 데이터를 검사하는 동안 새 트랜잭션에 대해 제약조건 적용을 시작합니다. 가능한 값과 나타내는 상태는 다음과 같습니다.
  • BACKFILLING_INDEXES: 색인이 백필되고 있습니다.
  • VALIDATING_DATA: 기존 데이터와 새 쓰기를 검사 중입니다.
  • WAITING_FOR_COMMIT: 외래 키 대량 작업이 성공적으로 완료되었거나 아무것도 필요하지 않습니다. 그렇지만 외래 키가 아직 대기 중입니다.
  • COMMITTED: 스키마 변경사항이 커밋되었습니다.

INFORMATION_SCHEMA.KEY_COLUMN_USAGE

이 테이블에는 PRIMARY KEY, FOREIGN KEY, UNIQUE 제약조건에 따라 키로 제한된 TABLE_CONSTRAINTS에서 테이블의 각 열에 대한 행 하나가 포함됩니다. 이것들은 제약조건을 정의하는 테이블의 열입니다.

열 이름 유형 설명
CONSTRAINT_CATALOG STRING 제약조건 카탈로그의 이름입니다. 항상 빈 문자열입니다.
CONSTRAINT_SCHEMA STRING 제약조건 스키마의 이름입니다. 이 열은 null이 아닙니다. 이름이 지정되지 않은 경우 빈 문자열입니다.
CONSTRAINT_NAME STRING 제약조건의 이름입니다.
TABLE_CATALOG STRING 제한된 열의 카탈로그 이름입니다. 항상 빈 문자열입니다.
TABLE_SCHEMA STRING 제한된 열의 스키마 이름입니다. 이 열은 null이 아닙니다. 이름이 지정되지 않은 경우 빈 문자열입니다.
TABLE_NAME STRING 제한된 열의 테이블 이름입니다.
COLUMN_NAME STRING 열의 이름입니다.
ORDINAL_POSITION INT64 1 값으로 시작하는 제약조건 키 내 열의 서수 위치입니다.
POSITION_IN_UNIQUE_CONSTRAINT INT64 FOREIGN KEYs에 대해 1 값으로 시작하는 고유 제약조건 내 열의 서수 위치입니다. 다른 제약조건 유형의 경우 이 열은 null입니다.

INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE

이 테이블에는 제약조건에 사용되는 각 열에 대한 행 하나가 포함됩니다. FOREIGN KEY 제약조건의 참조되는 열 외에도 PRIMARY KEYUNIQUE 열이 포함됩니다.

열 이름 유형 설명
TABLE_CATALOG STRING 열 테이블의 카탈로그 이름입니다. 항상 빈 문자열입니다.
TABLE_SCHEMA STRING 열 테이블의 스키마 이름입니다. 이 열은 null이 아닙니다. 이름이 지정되지 않은 경우 빈 문자열입니다.
TABLE_NAME STRING 열의 테이블 이름입니다.
COLUMN_NAME STRING 제약조건에 사용되는 열의 이름입니다.
CONSTRAINT_CATALOG STRING 제약조건 카탈로그의 이름입니다. 항상 빈 문자열입니다.
CONSTRAINT_SCHEMA STRING 제약조건 스키마의 이름입니다. 이름이 지정되지 않은 경우 빈 문자열입니다.
CONSTRAINT_NAME STRING 제약조건의 이름입니다.

INFORMATION_SCHEMA.INDEXES

이 테이블에는 스키마의 색인이 나열됩니다.

열 이름 유형 설명
TABLE_CATALOG STRING 카탈로그의 이름입니다. 항상 빈 문자열입니다.
TABLE_SCHEMA STRING 스키마의 이름입니다. 이름이 지정되지 않은 경우 빈 문자열입니다.
TABLE_NAME STRING 테이블의 이름입니다.
INDEX_NAME STRING 색인의 이름입니다. PRIMARY KEY 스펙이 있는 테이블은 이름PRIMARY_KEY으로 생성 된 허위 색인 항목이 있습니다. 이것은 기본 키의 필드를 결정할 수 있습니다.
INDEX_TYPE STRING 색인의 유형입니다. 유형은 INDEX 또는 PRIMARY_KEY입니다.
PARENT_TABLE_NAME STRING 보조 색인 만들기에 설명된 대로 보조 색인은 상위 테이블에서 인터리브 처리될 수 있습니다. 이 열에는 상위 테이블의 이름이 있습니다. 색인이 인터리브 처리되지 않은 경우에는 NULL입니다.
IS_UNIQUE BOOL 색인 키가 고유해야 하는지 여부입니다.
IS_NULL_FILTERED BOOL 색인에 NULL 값이 있는 항목을 포함하는지 여부입니다.
INDEX_STATE STRING 색인의 현재 상태입니다. 가능한 값과 나타내는 상태는 다음과 같습니다.
  • PREPARE: 새 색인의 빈 테이블 만들기
  • WRITE_ONLY: 새 색인의 데이터 백필
  • WRITE_ONLY_CLEANUP: 새 색인 삭제
  • WRITE_ONLY_VALIDATE_UNIQUE: 새 색인에서 데이터 고유성 확인
  • READ_WRITE: 정상 색인 작업
SPANNER_IS_MANAGED BOOL 색인이 Cloud Spanner에 의해 관리되는 경우 참이고, 그렇지 않으면 거짓입니다. 외래 키의 보조 지원 색인은 Cloud Spanner에서 관리합니다.

INFORMATION_SCHEMA.INDEX_COLUMNS

이 테이블에는 색인의 열이 나열됩니다.

열 이름 유형 설명
TABLE_CATALOG STRING 카탈로그의 이름입니다. 항상 빈 문자열입니다.
TABLE_SCHEMA STRING 스키마의 이름입니다. 이름이 지정되지 않은 경우 빈 문자열입니다.
TABLE_NAME STRING 테이블의 이름입니다.
INDEX_NAME STRING 색인의 이름입니다.
COLUMN_NAME STRING 열의 이름입니다.
ORDINAL_POSITION INT64 색인에서 열의 서수 위치이며 값 1부터 시작합니다. 이 값은 키가 아닌 열(예: 색인의 STORING에 지정된 열)의 NULL입니다.
COLUMN_ORDERING STRING 열의 순서입니다. 값은 키 열의 경우 ASC 또는 DESC이고 키 열이 아닌(예: 색인의 STORING 절에 지정된 열) 경우 NULL입니다.
IS_NULLABLE STRING 이 열에서 null을 사용할 수 있는지를 나타내는 문자열입니다. SQL 표준에 따라 이 문자열은 부울 값이 아닌 YES 또는 NO입니다.
SPANNER_TYPE STRING 열의 데이터 유형입니다.

INFORMATION_SCHEMA.COLUMN_OPTIONS

이 테이블에는 테이블의 열 옵션이 나열됩니다.

열 이름 유형 설명
TABLE_CATALOG STRING 카탈로그의 이름입니다. 항상 빈 문자열입니다.
TABLE_SCHEMA STRING 스키마의 이름입니다. 이 이름은 기본 스키마의 경우 비어 있고 다른(예: INFORMATION_SCHEMA 자체) 스키마의 경우 비어 있지 않습니다. 이 열은 null이 아닙니다.
TABLE_NAME STRING 테이블의 이름입니다.
COLUMN_NAME STRING 열의 이름입니다.
OPTION_NAME STRING 옵션을 고유하게 식별하는 SQL 식별자입니다. 이 식별자는 DDL의 OPTIONS 절 키입니다.
OPTION_TYPE STRING 이 옵션 값의 유형인 데이터 유형 이름입니다.
OPTION_VALUE STRING 이 옵션의 값을 설명하는 SQL 리터럴입니다. 이 열의 값은 쿼리의 일부로 파싱할 수 있어야 합니다. 값 파싱의 결과 표현식은 OPTION_TYPE으로 캐스팅 가능해야 합니다. 이 열은 null이 아닙니다.

사용자 스키마의 각 테이블에 대한 정보를 반환합니다.

SELECT
  t.table_name,
  t.parent_table_name
FROM
  information_schema.tables AS t
WHERE
  t.table_catalog = ''
  AND
  t.table_schema = ''
ORDER BY
  t.table_catalog,
  t.table_schema,
  t.table_name

사용자 테이블 MyTable의 열에 대한 정보를 반환합니다.

SELECT
  t.column_name,
  t.spanner_type,
  t.is_nullable
FROM
  information_schema.columns AS t
WHERE
  t.table_catalog = ''
  AND
  t.table_schema = ''
  AND
  t.table_name = 'MyTable'
ORDER BY
  t.table_catalog,
  t.table_schema,
  t.table_name,
  t.ordinal_position

사용자 스키마의 각 색인에 대한 정보를 반환합니다.

SELECT
  t.table_name,
  t.index_name,
  t.parent_table_name
FROM
  information_schema.indexes AS t
WHERE
  t.table_catalog = ''
  AND
  t.table_schema = ''
  AND
  t.index_type != 'PRIMARY_KEY'
ORDER BY
  t.table_catalog,
  t.table_schema,
  t.table_name,
  t.index_name

기본값 외의 옵션을 사용하는 모든 열을 반환합니다.

SELECT
  t.table_name,
  t.column_name,
  t.option_type,
  t.option_value,
  t.option_name
FROM
  information_schema.column_options AS t
WHERE
  t.table_catalog = ''
AND
  t.table_schema = ''

데이터베이스에서 현재 사용 중인 쿼리 최적화 도구 버전을 반환합니다.

SELECT
  s.OPTION_NAME,
  s.OPTION_VALUE
FROM
  INFORMATION_SCHEMA.DATABASE_OPTIONS s
WHERE
  s.SCHEMA_NAME=''
  AND s.OPTION_NAME = 'optimizer_version'

다음 단계

  • 데이터베이스 문제를 조사하는 데 도움이 되는 이용 가능한 점검 도구에 대해 알아보세요.