Mempercepat performa database menggunakan cache disk

Pilih versi dokumentasi:

Halaman ini menjelaskan cara menyediakan, menyiapkan, dan menggunakan caching disk di AlloyDB Omni untuk meningkatkan performa penginstalan AlloyDB Omni Anda.

Selain buffer bersama dalam memori PostgreSQL standar, cache disk AlloyDB Omni memungkinkan penyimpanan buffer di penyimpanan cepat seperti solid-state drive (SSD). Caching disk mempercepat pengambilan data di penginstalan AlloyDB Omni dengan direktori data yang berada di penyimpanan yang lebih lambat.

Seperti buffer bersama PostgreSQL, cache disk AlloyDB Omni tidak persisten, yang berarti data yang di-cache akan hilang saat dimulai ulang.

Secara default, cache disk AlloyDB Omni menggunakan semua penyimpanan yang dilaporkan oleh sistem file. Anda dapat menentukan jumlah penyimpanan yang dicadangkan untuk data caching menggunakan parameter omni_disk_cache_file_size.

Mengaktifkan cache disk AlloyDB Omni

Langkah-langkah yang Anda gunakan untuk mengaktifkan cache disk untuk AlloyDB Omni bergantung pada apakah Anda menjalankan AlloyDB Omni dalam container atau di cluster Kubernetes.

Mengaktifkan cache disk pada volume generik

Anda dapat mengaktifkan cache disk menggunakan volume generik.

Untuk mengaktifkan cache disk pada volume generik di operator AlloyDB Omni Kubernetes, Anda memerlukan volume persisten yang siap sebelumnya dan storageClass.

Misalnya, jika Anda menggunakan GKE dan belum menyiapkan volume persisten dan storageClass, pastikan Anda telah melakukan hal berikut sebelum mengaktifkan cache disk pada volume generik:

  1. Membuat cluster dengan penyimpanan berbasis SSD lokal.
  2. Memformat volume Anda ke sistem file ext4 menggunakan langkah 1 Jalankan penyedia statis volume lokal.
  3. Membuat volume persisten secara manual untuk setiap SSD di cluster Anda dengan storageClass yang menentukan penyimpanan persisten di perangkat penyimpanan.

Untuk mengaktifkan cache disk pada volume generik untuk database Anda, selesaikan langkah-langkah berikut:

  1. Ubah manifes cluster database Anda untuk menambahkan atribut ultraFastCache ke bagian features dari bagian spec:

          apiVersion: alloydbomni.dbadmin.goog/v1
          kind: DBCluster
          metadata:
            name: CLUSTER_NAME
          spec:
            databaseVersion: "17.5.0"
            primarySpec:
              features:
                ultraFastCache:
                  cacheSize: DISK_CACHE_SIZE
                  genericVolume:
                    storageClass: "STORAGE_CLASS_NAME"
          ...
          

    Ganti kode berikut:

    • DB_CLUSTER_NAME: nama cluster database Anda. Nama cluster database ini sama dengan yang Anda deklarasikan saat Anda membuatnya.
    • DISK_CACHE_SIZE: ukuran cache—misalnya, 100Gi. Nilainya harus lebih besar dari shared_buffers. Kolom ini bersifat opsional. Jika Anda tidak menentukan nilai kolom ini, AlloyDB Omni akan menggunakan semua ruang yang tersisa di disk, yang berlaku untuk AlloyDB Omni dalam container dan di cluster Kubernetes.
    • STORAGE_CLASS_NAME: nama storage class volume cache ultra cepat—misalnya, local-storage.
  2. Terapkan kembali manifes.

Mengaktifkan cache disk pada volume lokal

Jika ingin menggunakan volume lokal, Anda tidak perlu membuat volume persisten. Anda dapat menggunakan pengoptimalan berikut sebagai gantinya.

Misalnya, jika Anda menggunakan GKE dan belum menyiapkan volume persisten dan storageClass, pastikan Anda telah melakukan hal berikut sebelum mengaktifkan cache disk pada volume lokal:

  1. Membuat cluster dengan penyimpanan berbasis SSD lokal.
  2. Memformat volume Anda ke sistem file ext4 menggunakan langkah 1 Menjalankan penyedia statis volume lokal.

Untuk mengaktifkan cache disk pada volume lokal untuk database Anda, lakukan hal berikut:

  1. Ubah manifes cluster database Anda untuk menambahkan atribut ultraFastCache ke bagian features dari bagian spec:

        apiVersion: alloydbomni.dbadmin.goog/v1
        kind: DBCluster
        metadata:
          name: CLUSTER_NAME
        spec:
          databaseVersion: "17.5.0"
          primarySpec:
            features:
              ultraFastCache:
                cacheSize: DISK_CACHE_SIZE
                localVolume:
                  path: "LOCAL_VOLUME_PATH"
                  nodeAffinity:
                    required:
                      nodeSelectorTerms:
                      - matchExpressions:
                        - key: "LABEL_KEY"
                          operator: "OPERATOR_VALUE"
                          values:
                          - "LABEL_KEY_VALUE"
        ...
          

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster database Anda. Nama cluster database ini sama dengan yang Anda deklarasikan saat Anda membuatnya.
    • DISK_CACHE_SIZE: ukuran cache—misalnya, 100Gi. Nilainya harus lebih besar dari shared_buffers. Kolom ini bersifat opsional. Jika Anda tidak menentukan nilai kolom ini, AlloyDB Omni akan menggunakan semua ruang yang tersisa di disk, yang berlaku untuk AlloyDB Omni dalam container dan di cluster Kubernetes.
    • STORAGE_CLASS_NAME: nama class penyimpanan.
    • LOCAL_VOLUME_PATH: jalur ke volume lokal—misalnya, /mnt/disks/raid/0.
    • LABEL_KEY: label node untuk kunci yang berfungsi sebagai indikator lokasi dan memfasilitasi distribusi Pod yang merata di seluruh cluster—misalnya, cloud.google.com/gke-local-nvme-ssd.
    • OPERATOR_VALUE: hubungan kunci dengan sekumpulan nilai—misalnya, In. Tetapkan parameter ke salah satu opsi berikut:
      • In: array nilai tidak boleh kosong.
      • NotIn: array nilai tidak boleh kosong.
      • Exists: array nilai harus kosong.
      • DoesNotExist: array nilai harus kosong.
      • Gt: array nilai harus memiliki satu elemen, yang ditafsirkan sebagai bilangan bulat.
      • Lt: array nilai harus memiliki satu elemen, yang ditafsirkan sebagai bilangan bulat.
    • LABEL_KEY_VALUE: nilai untuk kunci label Anda—misalnya, true. Tetapkan parameter ke array nilai string sebagai berikut:
      • Jika operatornya adalah In atau NotIn, array nilai tidak boleh kosong.
      • Jika operatornya adalah Exists atau DoesNotExist, array nilai harus kosong.
      • Jika operatornya adalah Gt atau Lt, array nilai harus memiliki satu elemen, yang ditafsirkan sebagai bilangan bulat.
  2. Terapkan kembali manifes.

Mengaktifkan cache disk pada volume sementara

Anda dapat mengaktifkan cache disk menggunakan volume emptyDir, yang menyediakan penyimpanan sementara yang terikat langsung ke siklus proses pod Anda. Volume dibuat saat pod ditetapkan ke node, dan ada selama pod berjalan di node tersebut.

Saat pod dihapus dari node, data dalam emptyDir akan dihapus secara permanen. Jenis volume ini cocok untuk cache karena menyediakan penyimpanan sementara yang cepat. Data dalam cache tidak perlu dipertahankan jika pod dijadwalkan ulang.

Untuk mengaktifkan cache disk pada volume sementara untuk database Anda, selesaikan langkah-langkah berikut:

  1. Ubah manifes cluster database Anda untuk menambahkan atribut ultraFastCache ke bagian features dari bagian spec, dan tentukan emptyDirVolume:

          apiVersion: alloydbomni.dbadmin.goog/v1
          kind: DBCluster
          metadata:
            name: CLUSTER_NAME
          spec:
            databaseVersion: "17.5.0"
            primarySpec:
              features:
                ultraFastCache:
                  cacheSize: DISK_CACHE_SIZE
                  emptyDirVolume: {}
            ...
          

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster database Anda. Nama cluster database ini sama dengan yang Anda deklarasikan saat Anda membuatnya.
    • DISK_CACHE_SIZE: Ukuran cache—misalnya, 200 GiB.
  2. Terapkan kembali manifes.

Memverifikasi konfigurasi cache disk

Setelah mengaktifkan cache disk AlloyDB Omni, verifikasi bahwa cache disk diakses dengan memantau aktivitas baca dan tulis ke disk menggunakan utilitas yang tersedia seperti iotop atau iostat.

Selain itu, Anda dapat memeriksa apakah cache disk AlloyDB Omni terbuka.

Untuk memverifikasi konfigurasi cache disk untuk AlloyDB Omni, gunakan perintah berikut.

  kubectl exec -i $DATABASE_POD -c database -n $DBCLUSTER_NAMESPACE -- cat /obs/diagnostic/postgresql.log | grep "opened omni disk cache"

Jika penayangan cache disk dikonfigurasi dengan benar, pesan Successfully opened omni disk cache ... akan ditampilkan di log.

Langkah berikutnya