Memicu pemadatan besar secara manual di database Spanner

Dokumen ini menjelaskan cara memicu pemadatan utama secara manual di database Spanner.

Beberapa fitur terkait penyimpanan di Spanner, seperti penyimpanan bertingkat atau columnar engine, mengandalkan pemadatan utama di seluruh database sebelum diaktifkan sepenuhnya. Secara default, pemadatan utama terjadi secara otomatis di semua tabel selama periode tujuh hari. Artinya, Anda mungkin harus menunggu hingga tujuh hari agar fitur baru tersedia sepenuhnya. Agar fitur baru tersedia langsung, Anda dapat memicu pemadatan utama secara manual.

Proses pemadatan adalah operasi yang berjalan lama (LRO).

Harga

Memicu pemadatan utama secara manual akan meningkatkan penggunaan CPU pada instance Spanner Anda untuk sementara. Jika kapasitas komputasi tambahan diperlukan untuk mengimbangi peningkatan penggunaan CPU ini, biaya akan meningkat.

Performa

Pemadatan utama berjalan sebagai operasi latar belakang. Namun, jika instance Anda memiliki penggunaan CPU yang sangat tinggi secara konsisten, workload pemadatan dapat mengganggu operasi penting lainnya. Dalam kasus seperti itu, Anda dapat menskalakan instance untuk sementara guna memastikan performa yang stabil selama pemadatan.

Memicu pemadatan utama secara manual

Google Cloud Konsol

  1. Buka Google Cloud konsol dan pilih instance Anda.

    Buka instance Spanner

  2. Pilih database.

  3. Di menu navigasi, klik Spanner Studio.

  4. Buka tab baru dengan mengklik New SQL editor tab atau New tab.

  5. Jalankan salah satu perintah berikut untuk memulai pemadatan, berdasarkan dialek database Anda:

    GoogleSQL

    CALL compact_all();
    

    PostgreSQL

    CALL spanner.compact_all();
    

    Operasi ini menampilkan ID operasi yang berjalan lama (LRO) yang dapat Anda gunakan untuk menemukan operasi dalam daftar Operations.

  6. Untuk memantau progres operasi pemadatan, di menu navigasi, klik Operations.

C++

Untuk memicu pemadatan secara terprogram menggunakan library klien C++:

void Compact(google::cloud::spanner::Client client) {
  namespace spanner = ::google::cloud::spanner;

  spanner::SqlStatement select("CALL compact_all()");
  using RowType = std::tuple<std::string>;
  auto rows = client.ExecuteQuery(std::move(select));

  for (auto& row : spanner::StreamOf<RowType>(rows)) {
    if (!row) throw std::move(row).status();
    std::cout << "Long-running operation ID: " << std::get<0>(*row) << "\n";
  }
}

Anda dapat memeriksa progres operasi database yang berjalan lama. Anda juga dapat membatalkan permintaan pemadatan utama yang sedang berlangsung menggunakan ID LRO. Untuk mengetahui informasi selengkapnya, lihat Membatalkan operasi database yang berjalan lama.