Statistik operasi tabel

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

  • Mengidentifikasi tabel dengan peningkatan traffic operasi tulis yang terkait dengan peningkatan penyimpanan.

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

  • Mengidentifikasi tabel yang sering digunakan.

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

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

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 pembacaan tunggal lainnya yang disediakan Spanner tidak mendukung SPANNER_SYS.

Statistik operasi tabel

Tabel berikut melacak statistik pembacaan (atau kueri), penulisan, dan penghapusan di 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 dari panjang yang ditentukan oleh nama tabel.

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

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

    • 1 menit: 11.58.00–11.58.59
    • 10 menit: 11.40–11.49.59
    • 1 jam: 10.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 pembacaan yang dilakukan 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 bertambah 1 untuk setiap tabel yang diakses oleh pernyataan insert. Selain itu, kueri yang mengakses indeks, tanpa memindai tabel yang mendasarinya, hanya menambah read_query_count pada indeks.

Retensi data

Setidaknya, Spanner menyimpan data untuk setiap tabel selama jangka 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 berisi beberapa contoh pernyataan SQL yang mengambil statistik operasi tabel agregat. Anda dapat menjalankan pernyataan SQL ini menggunakan library klien atau gcloud spanner.

Mengkueri 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;
  

Mengkueri 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;
  

Mengkueri tabel dan indeks dengan operasi kueri dan pembacaan 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 sudah ada dalam database.

Mengkueri 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 sudah ada dalam database.

Mengkueri 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