Statistik ukuran tabel

Spanner menyediakan tabel bawaan berikut:

  • SPANNER_SYS.TABLE_SIZES_STATS_1HOUR: mencantumkan ukuran tabel dan indeks dalam database Anda.
  • SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR: mencantumkan ukuran tabel dan indeks dalam database Anda untuk setiap grup lokalitas.

Ukuran tabel dalam byte. Ukuran tabel mencakup versi data. Anda dapat menggunakan tabel bawaan ini untuk memantau ukuran tabel dan indeks dari waktu ke waktu. Anda juga dapat memantau ukuran indeks saat membuat, menghapus, dan mengubahnya (saat menyisipkan lebih banyak baris ke dalam indeks atau saat menambahkan kolom baru ke dalamnya). Selain itu, Anda juga dapat melihat ukuran tabel aliran data perubahan.

Penyimpanan database dapat dipantau dengan Metrik total penyimpanan database. Anda dapat melihat perincian penyimpanan database dengan SPANNER_SYS.TABLE_SIZES_STATS_1HOUR dan SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR.

Mengakses statistik ukuran tabel

Spanner menyediakan statistik ukuran tabel dalam skema SPANNER_SYS. Anda dapat menggunakan cara berikut untuk mengakses data SPANNER_SYS:

  • Halaman Spanner Studio database di konsol Google Cloud .

  • Perintah gcloud spanner databases execute-sql.

  • Metode executeSql atau executeStreamingSql.

Metode baca tunggal berikut yang disediakan Spanner tidak mendukung SPANNER_SYS:

  • Melakukan pembacaan kuat dari satu baris atau beberapa baris dalam tabel.
  • Melakukan pembacaan usang dari satu baris atau beberapa baris dalam tabel.
  • Membaca dari satu baris atau beberapa baris dalam indeks sekunder.

TABLE_SIZES_STATS_1HOUR

SPANNER_SYS.TABLE_SIZES_STATS_1HOUR berisi ukuran semua tabel dalam database Anda, yang diurutkan berdasarkan interval_end. Interval didasarkan pada waktu jam, yang berakhir pada jam tersebut. Secara internal, setiap 5 menit, Spanner mengumpulkan data dari semua server, lalu menyediakan data tersebut di tabel TABLE_SIZES_STATS_1HOUR tidak lama setelahnya. Data tersebut kemudian dirata-rata per jam. Misalnya, pada pukul 11.59.30, TABLE_SIZES_STATS_1HOUR menampilkan ukuran tabel rata-rata dari interval pukul 10.00.00 - 10.59.59.

Skema tabel

Nama kolom Jenis Deskripsi
INTERVAL_END TIMESTAMP Akhir interval waktu pengumpulan ukuran tabel.
TABLE_NAME STRING Nama tabel atau indeks.
USED_BYTES FLOAT64 Penyimpanan berbasis baris yang digunakan oleh tabel atau indeks dalam byte.
USED_SSD_BYTES FLOAT64 Penyimpanan berbasis baris SSD yang digunakan oleh tabel atau indeks dalam byte.
USED_HDD_BYTES FLOAT64 Penyimpanan berbasis baris HDD yang digunakan oleh tabel atau indeks dalam byte.
COLUMNAR_USED_BYTES FLOAT64 Penyimpanan berbentuk kolom yang digunakan oleh tabel atau indeks dalam byte.
COLUMNAR_USED_SSD_BYTES FLOAT64 Penyimpanan SSD berbentuk kolom yang digunakan oleh tabel atau indeks dalam byte.
COLUMNAR_USED_HDD_BYTES FLOAT64 Penyimpanan HDD berbentuk kolom yang digunakan oleh tabel atau indeks dalam byte.
COLUMNAR_COVERAGE_RATIO FLOAT64 Rasio data berformat kolom terhadap total data untuk tabel atau indeks dengan kebijakan kolom diaktifkan. Nilai berkisar dari 0.0 hingga 1.0.
COLUMNAR_SSD_COVERAGE_RATIO FLOAT64 Rasio data SSD berformat kolom terhadap total data SSD untuk tabel atau indeks dengan kebijakan kolom diaktifkan. Nilai berkisar dari 0.0 hingga 1.0.
COLUMNAR_HDD_COVERAGE_RATIO FLOAT64 Rasio data HDD berformat kolom terhadap total data HDD untuk tabel atau indeks dengan kebijakan kolom diaktifkan. Nilai berkisar dari 0.0 hingga 1.0.

Contoh kueri

Bagian ini mencakup beberapa contoh pernyataan SQL yang mengambil statistik ukuran tabel gabungan. Anda dapat menjalankan pernyataan SQL ini menggunakan library klien, gcloud spanner, atau konsolGoogle Cloud .

Membuat kueri 4 tabel dan indeks terbesar untuk interval terbaru

Kueri berikut menampilkan 4 tabel dan indeks terbesar untuk interval terbaru:

SELECT interval_end,
      table_name,
      used_bytes + columnar_used_bytes AS total_used_bytes
FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end = (
      SELECT MAX(interval_end)
      FROM spanner_sys.table_sizes_stats_1hour)
ORDER BY total_used_bytes DESC
LIMIT 4;
Output kueri
interval_end table_name total_used_bytes
2022-11-15 13:00:00-07:00 order_item 60495552
2022-11-15 13:00:00-07:00 orders 13350000
2022-11-15 13:00:00-07:00 item_inventory 2094549
2022-11-15 13:00:00-07:00 customer 870000

Tren ukuran kueri untuk tabel atau indeks tertentu selama 24 jam terakhir

Kueri berikut menampilkan ukuran tabel selama 24 jam terakhir:

GoogleSQL

SELECT interval_end,
      used_bytes + columnar_used_bytes AS total_used_bytes
  FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -24 HOUR)
  AND table_name = "<var>table_name</var>"
ORDER BY interval_end DESC;

Dengan:

  • table_name harus berupa tabel atau indeks yang ada dalam database.

PostgreSQL

SELECT interval_end,
      used_bytes + columnar_used_bytes AS total_used_bytes
  FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end > spanner.timestamptz_subtract(now(), '24 HOUR')
  AND table_name = '<var>table_name</var>'
ORDER BY interval_end DESC;

Dengan:

  • table_name harus berupa tabel atau indeks yang ada dalam database.
Output kueri
interval_end total_used_bytes
2022-11-15 13:00:00-07:00 13350000
2022-11-15 12:00:00-07:00 13350000
2022-11-15 11:00:00-07:00 13350000
2022-11-15 10:00:00-07:00 13350000
2022-11-15 09:00:00-07:00 13350000
2022-11-15 08:00:00-07:00 12350000
2022-11-15 07:00:00-07:00 12350000
2022-11-15 06:00:00-07:00 12350000
2022-11-15 05:00:00-07:00 11350000
2022-11-15 04:00:00-07:00 11350000
2022-11-15 03:00:00-07:00 11350000
2022-11-15 02:00:00-07:00 11350000
2022-11-15 01:00:00-07:00 11350000
2022-11-15 00:00:00-07:00 10350000
2022-11-14 23:00:00-07:00 10350000
2022-11-14 22:00:00-07:00 10350000
2022-11-14 21:00:00-07:00 10350000
2022-11-14 20:00:00-07:00 10350000
2022-11-14 19:00:00-07:00 10350000
2022-11-14 18:00:00-07:00 10350000
2022-11-14 17:00:00-07:00 10350000
2022-11-14 16:00:00-07:00 10350000
2022-11-14 15:00:00-07:00 10350000
2022-11-14 14:00:00-07:00 10350000
2022-11-14 13:00:00-07:00 10350000

Membuat kueri penggunaan penyimpanan dan cakupan berbasis kolom untuk interval terbaru

Kueri berikut menampilkan ukuran penyimpanan berbasis baris, ukuran penyimpanan berbasis kolom, dan rasio cakupan berbasis kolom untuk tabel dan indeks dalam interval terbaru:

GoogleSQL

SELECT interval_end,
      table_name,
      used_bytes,
      columnar_used_bytes,
      columnar_coverage_ratio
  FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end = (
      SELECT MAX(interval_end)
      FROM spanner_sys.table_sizes_stats_1hour)
ORDER BY columnar_used_bytes DESC;

PostgreSQL

SELECT interval_end,
      table_name,
      used_bytes,
      columnar_used_bytes,
      columnar_coverage_ratio
  FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end = (
      SELECT MAX(interval_end)
      FROM spanner_sys.table_sizes_stats_1hour)
ORDER BY columnar_used_bytes DESC;
Output kueri
interval_end table_name used_bytes columnar_used_bytes columnar_coverage_ratio
2022-11-15 13:00:00-07:00 order_item 45371664 15123888 0.95
2022-11-15 13:00:00-07:00 orders 10012500 3337500 0.85
2022-11-15 13:00:00-07:00 item_inventory 2094549 0 0
2022-11-15 13:00:00-07:00 customer 870000 0 0

Membuat kueri tren penyimpanan dan cakupan berdasarkan kolom untuk tabel atau indeks tertentu selama 24 jam terakhir

Kueri berikut menampilkan ukuran penyimpanan berbentuk kolom dan rasio cakupan untuk tabel atau indeks tertentu selama 24 jam terakhir:

GoogleSQL

SELECT interval_end,
      columnar_used_bytes,
      columnar_coverage_ratio
  FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -24 HOUR)
  AND table_name = "<var>table_name</var>"
ORDER BY interval_end DESC;

Dengan:

  • table_name harus berupa tabel atau indeks yang ada dalam database.

PostgreSQL

SELECT interval_end,
      columnar_used_bytes,
      columnar_coverage_ratio
  FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end > spanner.timestamptz_subtract(now(), '24 HOUR')
  AND table_name = '<var>table_name</var>'
ORDER BY interval_end DESC;

Dengan:

  • table_name harus berupa tabel atau indeks yang ada dalam database.
Output kueri
interval_end columnar_used_bytes columnar_coverage_ratio
2022-11-15 13:00:00-07:00 3337500 0.85
2022-11-15 12:00:00-07:00 3337500 0.85
2022-11-15 11:00:00-07:00 3140000 0.8
2022-11-15 10:00:00-07:00 2945000 0.75
2022-11-15 09:00:00-07:00 2750000 0.7
2022-11-15 08:00:00-07:00 2355000 0.6

TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR

SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR berisi ukuran semua tabel dalam database Anda, yang diurutkan berdasarkan interval_end, untuk setiap grup lokalitas. Interval didasarkan pada waktu jam, yang berakhir pada jam tersebut. Secara internal, setiap 5 menit, Spanner mengumpulkan data dari semua server, lalu menyediakan data tersebut di tabel TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR tidak lama setelahnya. Data tersebut kemudian dirata-rata per jam. Misalnya, pada pukul 11.59.30, TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR menampilkan ukuran tabel rata-rata untuk setiap grup lokalitas dari interval pukul 10.00.00 - 10.59.59.

Skema tabel

Nama kolom Jenis Deskripsi
INTERVAL_END TIMESTAMP Akhir interval waktu pengumpulan ukuran tabel.
TABLE_NAME STRING Nama tabel atau indeks.
LOCALITY_GROUP STRING Nama grup lokalitas.
USED_BYTES FLOAT64 Ukuran tabel dalam byte.
USED_SSD_BYTES FLOAT64 Penyimpanan SSD yang digunakan oleh tabel dalam byte.
USED_HDD_BYTES FLOAT64 Penyimpanan HDD yang digunakan oleh tabel dalam byte.

Retensi data

Minimal, Spanner menyimpan data untuk SPANNER_SYS.TABLE_SIZES_STATS_1HOUR selama interval yang mencakup 30 hari sebelumnya.

Langkah berikutnya