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 berjenjang atau mesin kolom, bergantung pada 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 akan meningkatkan kapasitas komputasi pada instance Spanner untuk sementara. Hal ini dapat mengakibatkan peningkatan biaya.

Performa

Pemadatan utama berjalan sebagai operasi latar belakang. Namun, jika instance Anda memiliki penggunaan CPU yang sangat berat secara konsisten, workload pemadatan dapat mengganggu operasi penting lainnya. Dalam kasus tersebut, 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. Panggil perintah berikut untuk memulai pemadatan:

    # GoogleSQL
    CALL compact_all();
    
    #Postgres
    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()");
  auto rows = client.ExecuteQuery(statement);
  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.