Statistik operasi tabel

Spanner menyediakan tabel bawaan yang mencatat statistik operasi baca (atau kueri), tulis, dan hapus untuk tabel (termasuk tabel aliran perubahan) dan indeks Anda. Dengan statistik operasi tabel, Anda dapat melakukan hal berikut:

  • Identifikasi tabel dengan peningkatan traffic tulis yang sesuai dengan peningkatan penyimpanan.

  • Identifikasi tabel dengan traffic baca, tulis, dan hapus yang tidak terduga.

  • Identifikasi tabel yang banyak digunakan.

Saat Anda membuat kueri atau menulis ke tabel, jumlah operasi yang sesuai untuk tabel akan bertambah 1, terlepas dari jumlah baris yang diakses.

Metrik operasi per detik secara keseluruhan dari database dapat dipantau dengan Operations per second, Operations per second by API method, dan metrik terkait lainnya dalam diagram Insight Sistem.

Ketersediaan

Spanner menyediakan statistik operasi tabel dalam skema SPANNER_SYS. Data SPANNER_SYS hanya tersedia melalui antarmuka SQL. Contoh:

  • Halaman Spanner Studio database di konsol Google Cloud

  • Perintah gcloud spanner databases execute-sql

  • executeQuery API

Metode baca tunggal lainnya yang disediakan Spanner tidak mendukung SPANNER_SYS.

Statistik operasi tabel

Tabel berikut melacak statistik baca (atau kueri), tulis, dan hapus pada tabel dan indeks Anda selama jangka waktu tertentu:

  • SPANNER_SYS.TABLE_OPERATIONS_STATS_MINUTE: Operasi selama interval 1 menit
  • SPANNER_SYS.TABLE_OPERATIONS_STATS_10MINUTE: Operasi selama interval 10 menit
  • SPANNER_SYS.TABLE_OPERATIONS_STATS_HOUR: Operasi selama interval 1 jam

Tabel ini memiliki properti berikut:

  • Setiap tabel berisi data untuk interval waktu yang tidak tumpang-tindih dengan panjang yang ditentukan oleh nama tabel.

  • Interval didasarkan pada waktu jam. Interval 1 menit dimulai pada menit, interval 10 menit dimulai setiap 10 menit mulai dari jam, dan interval 1 jam dimulai pada jam.

    Misalnya, pada pukul 11.59.30, interval terbaru yang tersedia untuk kueri SQL adalah:

    • 1 menit: 00.58.00–00.58.59
    • 10 menit: 11.40.00–11.49.59
    • 1 jam: 10.00.00–10.59.59

Skema untuk semua tabel statistik operasi tabel

Nama kolom Jenis Deskripsi
INTERVAL_END TIMESTAMP Akhir interval waktu saat ukuran tabel dikumpulkan.
TABLE_NAME STRING Nama tabel atau indeks.
READ_QUERY_COUNT INT64 Jumlah kueri atau operasi baca dari tabel.
WRITE_COUNT INT64 Jumlah kueri yang menulis ke tabel.
DELETE_COUNT INT64 Jumlah kueri yang melakukan penghapusan pada tabel.

Jika Anda menyisipkan data ke dalam database menggunakan mutasi, write_count akan meningkat sebesar 1 untuk setiap tabel yang diakses oleh pernyataan penyisipan. Selain itu, kueri yang mengakses indeks, tanpa memindai tabel yang mendasarinya, hanya akan menambah read_query_count pada indeks.

Retensi data

Setidaknya, Spanner menyimpan data untuk setiap tabel selama periode waktu berikut:

  • SPANNER_SYS.TABLE_OPERATIONS_STATS_MINUTE: Interval yang mencakup 6 jam sebelumnya.

  • SPANNER_SYS.TABLE_OPERATIONS_STATS_10MINUTE: Interval yang mencakup 4 hari sebelumnya.

  • SPANNER_SYS.TABLE_OPERATIONS_STATS_HOUR: Interval yang mencakup 30 hari sebelumnya.

Contoh kueri

Bagian ini mencakup beberapa contoh pernyataan SQL yang mengambil statistik operasi tabel agregat. Anda dapat menjalankan pernyataan SQL ini menggunakan library klien, atau gcloud spanner.

Membuat kueri tabel dan indeks dengan operasi tulis terbanyak untuk interval terbaru

    SELECT interval_end,
          table_name,
          write_count
    FROM spanner_sys.table_operations_stats_minute
    WHERE interval_end = (
          SELECT MAX(interval_end)
          FROM spanner_sys.table_operations_stats_minute)
    ORDER BY write_count DESC;
  

Membuat kueri tabel dan indeks dengan operasi penghapusan terbanyak untuk interval terbaru

    SELECT interval_end,
          table_name,
          delete_count
    FROM spanner_sys.table_operations_stats_minute
    WHERE interval_end = (
          SELECT MAX(interval_end)
          FROM spanner_sys.table_operations_stats_minute)
    ORDER BY delete_count DESC;
  

Membuat kueri tabel dan indeks dengan operasi kueri dan operasi baca terbanyak untuk interval terbaru

    SELECT interval_end,
          table_name,
          read_query_count
    FROM spanner_sys.table_operations_stats_minute
    WHERE interval_end = (
          SELECT MAX(interval_end)
          FROM spanner_sys.table_operations_stats_minute)
    ORDER BY read_query_count DESC;
  

Membuat kueri penggunaan tabel selama 6 jam terakhir

    SELECT interval_end,
           read_query_count,
           write_count,
           delete_count
    FROM spanner_sys.table_operations_stats_minute
    WHERE table_name = table_name
    ORDER BY interval_end DESC;
    

Dengan keterangan:

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

Membuat kueri penggunaan tabel selama 14 hari terakhir

GoogleSQL

SELECT interval_end,
       read_query_count,
       write_count,
       delete_count
FROM spanner_sys.table_operations_stats_hour
WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -14 DAY)
      AND table_name = table_name
ORDER BY interval_end DESC;

Dengan keterangan:

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

Membuat kueri tabel dan indeks tanpa penggunaan dalam 24 jam terakhir

GoogleSQL

(SELECT t.table_name
 FROM  information_schema.tables AS t
 WHERE t.table_catalog = ""
   AND t.table_schema = ""
   AND t.table_type = "BASE TABLE"
 UNION ALL
 SELECT cs.change_stream_name
 FROM information_schema.change_streams cs
 WHERE cs.change_stream_catalog = ""
   AND cs.change_stream_schema = ""
 UNION ALL
 SELECT idx.index_name
 FROM information_schema.indexes idx
 WHERE idx.index_type = "INDEX"
   AND idx.table_catalog = ""
   AND idx.table_schema = "")
 EXCEPT ALL
(SELECT  DISTINCT(table_name)
 FROM spanner_sys.table_operations_stats_hour
 WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -24 HOUR));

Langkah selanjutnya