Tampilan SEARCH_INDEXES_BY_ORGANIZATION

Indeks penelusuran BigQuery menyediakan pengelolaan indeks gratis hingga organisasi Anda mencapai batas di wilayah tertentu. Anda dapat menggunakan tampilan INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION untuk memahami penggunaan saat ini terhadap batas tersebut, yang dikelompokkan menurut project dan tabel. Tampilan INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION berisi satu baris untuk setiap indeks penelusuran untuk seluruh organisasi yang terkait dengan project saat ini.

Izin yang diperlukan

Untuk membuat kueri tampilan INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION, Anda memerlukan izin Identity and Access Management (IAM) berikut untuk organisasi Anda:

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

Setiap peran IAM yang telah ditetapkan berikut mencakup izin sebelumnya:

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

Tampilan skema ini hanya tersedia bagi pengguna dengan organisasiGoogle Cloud yang ditentukan.

Untuk mengetahui informasi selengkapnya tentang izin BigQuery, lihat Kontrol akses dengan IAM.

Skema

Tampilan INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION memiliki skema berikut:

Nama kolom Jenis data Nilai
project_id STRING Nama project yang berisi set data.
project_number STRING Nomor project yang berisi set data.
index_catalog STRING Nama project yang berisi set data.
index_schema STRING Nama set data yang berisi indeks.
table_name STRING Nama tabel dasar tempat indeks dibuat.
index_name STRING Nama indeks penelusuran.
index_status STRING Status indeks dapat berupa salah satu dari berikut:
  • ACTIVE: indeks dapat digunakan atau sedang dibuat.
  • PENDING DISABLEMENT: ukuran total tabel dasar yang diindeks melebihi batas organisasi Anda; indeks dimasukkan ke dalam antrean untuk dihapus. Dalam status ini, indeks dapat digunakan dalam kueri penelusuran dan Anda akan dikenai biaya untuk penyimpanan indeks penelusuran.
  • TEMPORARILY DISABLED: ukuran total tabel dasar yang diindeks melebihi batas organisasi Anda, atau tabel dasar yang diindeks lebih kecil dari 10 GB. Selama dalam status ini, indeks tidak digunakan dalam kueri penelusuran dan Anda tidak akan dikenai biaya untuk penyimpanan indeks penelusuran.
  • PERMANENTLY DISABLED: ada perubahan skema yang tidak kompatibel pada tabel dasar, seperti mengubah jenis kolom yang diindeks dari STRING menjadi INT64.
index_status_details RECORD Rekaman berisi kolom berikut:
  • throttle_status: menunjukkan status pembatasan indeks penelusuran, kemungkinan nilainya adalah sebagai berikut:
    • UNTHROTTLED: indeks dapat digunakan.
    • BASE_TABLE_TOO_SMALL: ukuran tabel dasar lebih kecil dari 10 GB. Batas ini berlaku terlepas dari apakah Anda menggunakan pemesanan sendiri untuk tugas pengelolaan indeks Anda atau tidak. Dalam hal ini, indeks dinonaktifkan untuk sementara dan kueri penelusuran tidak menggunakan indeks.
    • BASE_TABLE_TOO_LARGE: ukuran tabel dasar melebihi batas organisasi Anda.
    • ORGANIZATION_LIMIT_EXCEEDED: ukuran total tabel dasar yang diindeks di organisasi Anda melebihi batas organisasi Anda.
  • message: pesan mendetail yang menjelaskan status indeks.
use_background_reservation BOOL Menunjukkan apakah pemeliharaan indeks menggunakan reservasi BACKGROUND. Nilai ini ditetapkan ke FALSE saat pemeliharaan indeks menggunakan batas.

Cakupan dan sintaksis

Kueri terhadap tabel virtual ini harus menyertakan penentu region. Tabel berikut menjelaskan cakupan region untuk tabel virtual ini:

Nama tabel virtual Cakupan resource Cakupan region
[`PROJECT_ID`.]`region-REGION`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION Organisasi yang berisi project yang ditentukan REGION

Ganti kode berikut:

  • Opsional: PROJECT_ID: ID project Google Cloud Anda. Jika tidak ditentukan, project default akan digunakan.

  • REGION: region untuk project Anda. Misalnya, `myproject`.`region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION.

Pembatasan indeks

Jika indeks di-throttle, ukuran tabelnya tidak dihitung dalam batas organisasi Anda. Pembatasan ini terjadi saat ukuran tabel dasar berada di bawah 10 GB atau melebihi batas organisasi Anda. Jika indeks dibatasi, tugas pengelolaannya akan dijeda, sehingga indeks menjadi tidak valid dan akhirnya dinonaktifkan untuk sementara. Akibatnya, kueri penelusuran tidak dapat menggunakan indeks.

Contoh

Bagian ini mencakup contoh kueri tampilan INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION.

Menemukan apakah konsumsi melebihi batas di region tertentu

Contoh berikut menggambarkan jika total ukuran tabel dasar yang diindeks di seluruh organisasi, yang menggunakan slot bersama dalam multi-region Amerika Serikat, melebihi 100 TB:

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

Hasilnya mirip dengan berikut ini:

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

Menemukan ukuran total tabel dasar yang diindeks menurut project di suatu region

Contoh berikut memberikan perincian pada setiap project di multi-region AS dengan total ukuran tabel dasar yang diindeks:

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

Hasilnya mirip dengan berikut ini:

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

Menemukan indeks penelusuran yang dibatasi

Contoh berikut menampilkan semua indeks penelusuran yang dibatasi dalam organisasi dan region:

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')

Hasilnya mirip dengan berikut ini:

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