Mengoptimalkan performa di bucket dengan namespace hierarkis yang diaktifkan

Halaman ini memberikan panduan tentang cara mengoptimalkan performa di bucket dengan namespace hierarkis yang diaktifkan.

Mencantumkan objek

Berikut adalah pertimbangan performa untuk mencantumkan objek:

  • Di bucket dengan namespace hierarkis yang diaktifkan, mencantumkan semua objek untuk seluruh bucket atau dengan awalan akan membutuhkan banyak resource karena operasi harus menjelajahi setiap folder dan subfolder, mirip dengan perintah ls -r dalam sistem file. Akibatnya, jika ada lebih banyak folder di bucket Anda, listingan objek akan semakin lambat. Banyak folder kosong juga dapat berdampak negatif pada performa listingan objek. Untuk menghindari dampak negatif pada performa, sebaiknya Anda memaksimalkan jumlah objek di setiap folder dan menghapus folder kosong secara berkala.
  • Mencantumkan atau mengambil objek dan subfolder dalam folder tertentu menggunakan pemisah dan awalan tertentu akan lebih efisien di bucket dengan namespace hierarkis yang diaktifkan karena objek diatur dalam struktur folder. Untuk mengoptimalkan performa listingan saat menggunakan pemisah dan awalan tertentu, tetapkan parameter includeFoldersAsPrefixes. Jika tidak, Cloud Storage akan melakukan pemeriksaan tambahan untuk mengecualikan folder kosong, yang dapat memperlambat operasi. Untuk informasi selengkapnya tentang penggunaan includeFoldersAsPrefixes saat mencantumkan objek, lihat Mencantumkan objek.

Pengelolaan folder

Untuk pengelolaan folder yang efisien, sebaiknya lakukan hal berikut:

  • Membuat struktur folder terlebih dahulu: Daripada mengandalkan pembuatan folder otomatis selama operasi upload, penulisan ulang, dan komposisi objek, gunakan operasi pembuatan folder untuk mendapatkan struktur folder yang diinginkan terlebih dahulu. Membuat struktur folder terlebih dahulu akan meningkatkan konsistensi dan prediktabilitas performa.
  • Maksimalkan rasio objek per folder: Usahakan rasio objek-ke-folder yang tinggi karena akan mengurangi overhead yang terkait dengan pembuatan dan pengelolaan folder.
  • Batasi permintaan pembuatan dan penghapusan folder: Membuat atau menghapus folder lebih banyak menggunakan resource daripada menggunakan objek individual karena sifat hierarkisnya. Untuk memastikan performa yang lancar, Cloud Storage membatasi operasi ini hingga 1.000 permintaan per detik untuk setiap bucket. Permintaan yang melebihi batas ini tidak dibatasi secara eksplisit, tetapi ketersediaan resource menentukan apakah permintaan tersebut dapat diproses dengan sukses.
  • Menghapus folder kosong secara rutin: Folder kosong dapat menumpuk, terutama saat menggunakan Object Lifecycle Management atau menghapus objek tanpa menghapus folder induknya secara eksplisit. Folder yang terakumulasi dapat memengaruhi performa operasi listingan objek dan operasi terkait folder lainnya. Berikut adalah beberapa metode yang dapat Anda gunakan untuk menghapus folder kosong:

    • Saat Anda menggunakan Cloud Storage FUSE atau konektor Cloud Storage untuk berinteraksi dengan bucket yang diaktifkan dengan namespace hierarkis, menghapus direktori akan menghapus folder yang sesuai di bucket Anda.
    • Anda dapat menggunakan penghapusan rekursif untuk menghapus folder secara otomatis saat menggunakan konsol Google Cloud atau Google Cloud CLI.
    • Anda dapat menggunakan skrip atau proses otomatis untuk menghapus folder kosong secara berkala. Skrip berikut memberikan pendekatan dasar untuk menghapus folder kosong. Skrip menghapus folder secara berurutan, yang dapat lambat untuk bucket besar, sehingga Anda dapat mempertimbangkan untuk mengoptimalkan skrip untuk lingkungan produksi. Selain itu, skrip ini menghapus semua folder kosong (dibuat secara implisit atau eksplisit) termasuk folder terkelola dan kebijakan IAM terkait. Jika Anda perlu mempertahankan folder tertentu dan folder terkelola, sesuaikan skrip berdasarkan resource yang ingin Anda pertahankan.

      # List all the folders under <bucket>/<prefix> and export results into
      # folders.txt
      gcloud storage folders list gs://<bucket>/<prefix> | grep storage_url | sed 's/storage_url: //' > folders.txt
      
      # Reverse the folder list and export results into folders-reverse.txt
      sed '1!G;h;$!d' folders.txt > folders-reverse.txt
      
      # Try deleting each folder in the reverse order (to guarantee child
      # folders are deleted before parent folders). This will fail for
      # non-empty folders, so only empty folders will be deleted
      xargs -I{} gcloud storage folders delete "{}" < folders-reverse.txt
      

Langkah selanjutnya