SEARCH_INDEXES_BY_ORGANIZATION 뷰

BigQuery 검색 색인은 조직이 특정 리전에서 한도에 도달할 때까지 무료 색인 관리를 제공합니다. INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION 뷰를 사용하여 프로젝트 및 테이블별로 분류된 현재 소비량을 파악할 수 있습니다. INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION 뷰에는 현재 프로젝트와 연결된 전체 조직의 각 검색 색인에 대해 하나의 행이 포함되어 있습니다.

필수 권한

INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION 뷰를 쿼리하려면 조직에 대한 다음 Identity and Access Management (IAM) 권한이 필요합니다.

  • bigquery.tables.get
  • bigquery.tables.list

다음과 같이 사전 정의된 각 IAM 역할에는 위의 권한이 포함되어 있습니다.

  • roles/bigquery.admin
  • roles/bigquery.dataViewer
  • roles/bigquery.dataEditor
  • roles/bigquery.metadataViewer

이 스키마 뷰는 Google Cloud 조직이 정의된 사용자만 사용할 수 있습니다.

BigQuery 권한에 대한 자세한 내용은 IAM으로 액세스 제어를 참조하세요.

스키마

INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION 뷰에는 다음과 같은 스키마가 있습니다.

열 이름 데이터 유형
project_id STRING 데이터 세트가 포함된 프로젝트의 이름입니다.
project_number STRING 데이터 세트가 포함된 프로젝트 번호입니다.
index_catalog STRING 데이터 세트가 포함된 프로젝트의 이름입니다.
index_schema STRING 색인이 포함된 데이터 세트 이름입니다.
table_name STRING 색인이 생성되는 기본 테이블의 이름입니다.
index_name STRING 검색 색인의 이름입니다.
index_status STRING 인덱스 상태는 다음 중 하나일 수 있습니다.
  • ACTIVE: 색인이 사용 가능하거나 생성 중입니다.
  • PENDING DISABLEMENT: 색인이 생성된 기본 테이블의 총 크기가 조직의 한도를 초과합니다. 이 색인은 삭제를 위해 큐에 추가됩니다. 이 상태에서는 색인을 검색어에 사용할 수 있으며 검색 색인 스토리지에 대한 요금이 부과됩니다.
  • TEMPORARILY DISABLED: 색인이 생성된 기본 테이블의 총 크기가 조직의 한도를 초과하거나 색인이 생성된 기본 테이블이 10GB보다 작습니다. 이 상태에서는 색인이 검색어에 사용되지 않으며 검색 색인 스토리지 요금이 부과되지 않습니다.
  • PERMANENTLY DISABLED: 색인이 생성된 열의 유형을 STRING에서 INT64로 변경하는 것과 같이 기본 테이블에서 호환되지 않는 스키마 변경이 있습니다.
index_status_details RECORD 레코드에는 다음 필드가 포함됩니다.
  • throttle_status: 검색 색인의 스로틀 상태를 나타냅니다. 가능한 값은 다음과 같습니다.
    • UNTHROTTLED: 색인을 사용할 수 있습니다.
    • BASE_TABLE_TOO_SMALL: 기본 테이블 크기가 10GB보다 작습니다. 이 한도는 색인 관리 작업에 자체 예약을 사용하는지 여부에 관계없이 적용됩니다. 이 경우 색인이 일시적으로 사용 중지되고 검색 쿼리에서 색인이 사용되지 않습니다.
    • BASE_TABLE_TOO_LARGE: 기본 테이블 크기가 조직의 한도를 초과합니다.
    • ORGANIZATION_LIMIT_EXCEEDED: 조직에서 색인이 생성된 기본 테이블의 총 크기가 조직의 한도를 초과합니다.
  • message: 색인 상태를 설명하는 자세한 메시지입니다.
use_background_reservation BOOL 색인 유지보수가 BACKGROUND 예약을 사용하는지 여부를 나타냅니다. 색인 유지보수가 한도를 사용하는 경우 FALSE로 설정됩니다.

범위 및 구문

이 뷰에 대한 쿼리에는 리전 한정자가 있어야 합니다. 다음 표에는 이 뷰의 리전 범위가 나와 있습니다.

뷰 이름 리소스 범위 리전 범위
[`PROJECT_ID`.]`region-REGION`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION 지정된 프로젝트가 포함된 조직 REGION

다음을 바꿉니다.

  • 선택사항: PROJECT_ID:Google Cloud 프로젝트의 ID입니다. 지정하지 않으면 기본 프로젝트가 사용됩니다.

  • REGION: 프로젝트의 리전입니다. 예를 들면 `myproject`.`region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION입니다.

색인 제한

색인의 처리량이 제한되면 해당 테이블 크기는 조직의 한도에 포함되지 않습니다. 이 제한은 기본 테이블 크기가 10GB 미만이거나 조직의 한도를 초과하는 경우에 발생합니다. 색인이 제한되면 관리 작업이 일시중지되어 색인이 오래되고 결국 일시적으로 사용 중지됩니다. 따라서 검색어에서 색인을 사용할 수 없습니다.

예시

이 섹션에는 INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION 뷰의 쿼리 예시가 포함되어 있습니다.

특정 리전에서 사용량이 한도를 초과하는지 확인

다음 예에서는 미국 멀티 리전 내에서 공유 슬롯을 사용하는 조직 전체의 색인이 생성된 기본 테이블 크기가 100TB를 초과하는 경우를 보여줍니다.

WITH
 indexed_base_table_size AS (
 SELECT
   SUM(base_table.total_logical_bytes) AS total_logical_bytes
 FROM
   `region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION AS search_index
 JOIN
   `region-us`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_ORGANIZATION AS base_table
 ON
   (search_index.table_name = base_table.table_name
     AND search_index.project_id = base_table.project_id
     AND search_index.index_schema = base_table.table_schema)
 WHERE
   TRUE
   -- Excludes search indexes that are permanently disabled.
   AND search_index.index_status != 'PERMANENTLY DISABLED'
   -- Excludes BASE_TABLE_TOO_SMALL search indexes whose base table size is
   -- less than 10 GB. These tables don't count toward the limit.
   AND search_index.index_status_details.throttle_status != 'BASE_TABLE_TOO_SMALL'
   -- Excludes search indexes whose project has BACKGROUND reservation purchased
   -- for search indexes.
   AND search_index.use_background_reservation = false
 -- Outputs the total indexed base table size if it exceeds 100 TB,
 -- otherwise, doesn't return any output.
)
SELECT * FROM indexed_base_table_size
WHERE total_logical_bytes >= 109951162777600 -- 100 TB

결과는 다음과 비슷합니다.

+---------------------+
| total_logical_bytes |
+---------------------+
|     109951162777601 |
+---------------------+

리전의 프로젝트별로 색인이 생성된 기본 테이블의 총 크기 확인

다음 예에서는 색인이 생성된 기본 테이블의 총 크기와 함께 미국 멀티 리전의 각 프로젝트에 대한 분석을 제공합니다.

SELECT
 search_index.project_id,
 search_index.use_background_reservation,
 SUM(base_table.total_logical_bytes) AS total_logical_bytes
FROM
 `region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION AS search_index
JOIN
 `region-us`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_ORGANIZATION AS base_table
ON
 (search_index.table_name = base_table.table_name
   AND search_index.project_id = base_table.project_id
   AND search_index.index_schema = base_table.table_schema)
WHERE
 TRUE
  -- Excludes search indexes that are permanently disabled.
  AND search_index.index_status != 'PERMANENTLY DISABLED'
  -- Excludes BASE_TABLE_TOO_SMALL search indexes whose base table size is
  -- less than 10 GB. These tables don't count toward limit.
 AND search_index.index_status_details.throttle_status != 'BASE_TABLE_TOO_SMALL'
GROUP BY search_index.project_id, search_index.use_background_reservation

결과는 다음과 비슷합니다.

+---------------------+----------------------------+---------------------+
|     project_id      | use_background_reservation | total_logical_bytes |
+---------------------+----------------------------+---------------------+
| projecta            |     true                   |     971329178274633 |
+---------------------+----------------------------+---------------------+
| projectb            |     false                  |     834638211024843 |
+---------------------+----------------------------+---------------------+
| projectc            |     false                  |     562910385625126 |
+---------------------+----------------------------+---------------------+

제한된 검색 색인 찾기

다음 예시는 조직 및 리전 내에서 제한된 모든 검색 색인을 반환합니다.

SELECT project_id, index_schema, table_name, index_name
FROM
 `region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION
WHERE
 -- Excludes search indexes that are permanently disabled.
 index_status != 'PERMANENTLY DISABLED'
 AND index_status_details.throttle_status IN ('ORGANIZATION_LIMIT_EXCEEDED', 'BASE_TABLE_TOO_LARGE')

결과는 다음과 비슷합니다.

+--------------------+--------------------+---------------+----------------+
|     project_id     |    index_schema    |  table_name   |   index_name   |
+--------------------+--------------------+---------------+----------------+
|     projecta       |     dataset_us     |   table1      |    index1      |
|     projectb       |     dataset_us     |   table1      |    index1      |
+--------------------+--------------------+---------------+----------------+