Memicu pemadatan besar secara manual di database Spanner

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

Beberapa fitur terkait penyimpanan di Spanner, seperti penyimpanan tingkat atau mesin columnar, mengandalkan pemadatan besar di seluruh database sebelum diaktifkan sepenuhnya. Secara default, pemadatan besar 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 dengan segera, Anda dapat memicu pemadatan besar secara manual.

Proses pemadatan adalah operasi yang berjalan lama (LRO).

Harga

Memicu pemadatan besar akan meningkatkan kapasitas komputasi untuk sementara di instance Spanner. Hal ini dapat mengakibatkan peningkatan biaya.

Performa

Pemadatan besar berjalan sebagai operasi latar belakang. Namun, jika instance Anda memiliki penggunaan CPU yang berat secara konsisten, workload pemadatan mungkin mengganggu operasi penting lainnya. Dalam kasus tersebut, Anda dapat melakukan penskalaan instance untuk sementara guna memastikan performa yang stabil selama pemadatan.

Memicu pemadatan besar secara manual

Konsol Google Cloud

  1. Buka konsol Google Cloud , lalu 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:

    CALL compact_all();
    

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

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

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 besar yang sedang berlangsung menggunakan ID LRO. Untuk mengetahui informasi selengkapnya, lihat Membatalkan operasi database yang berjalan lama.