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 |
인덱스 상태는 다음 중 하나일 수 있습니다.
|
index_status_details |
RECORD |
레코드에는 다음 필드가 포함됩니다.
|
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 | +--------------------+--------------------+---------------+----------------+