Setelah mengimpor sejumlah besar data secara offline atau melakukan banyak operasi DELETE atau UPDATE, kinerja baca dan tulis data dapat menurun akibat fragmentasi file. Dalam situasi ini, Anda perlu menjalankan operasi compaction. Operasi compaction menggabungkan beberapa file data menjadi satu file besar untuk meningkatkan efisiensi pembacaan dan penulisan data. Selama proses compaction, struktur penyimpanan data diorganisir ulang. Topik ini menjelaskan cara menjalankan operasi compaction di Hologres.
Informasi latar belakang
Struktur data model penulisan data Hologres mirip dengan log-structured merge-tree (LSM-tree). Data ditulis ke penyimpanan dalam mode append-only. Struktur ini mengubah penulisan acak menjadi penulisan berurutan, yang merupakan pendekatan berorientasi penulisan untuk meningkatkan throughput secara efektif. Pemadatan diperlukan untuk menggabungkan file data yang ada menjadi file yang lebih besar.
Hologres mendukung dua jenis operasi pemadatan:
Pemadatan Otomatis
Pemadatan otomatis di Hologres bersifat hierarkis dengan maksimal lima level. Jika terdapat lebih dari lima file pada suatu level, pemadatan akan dipicu. File besar hasil pemadatan ditempatkan di level berikutnya. Sebagai contoh, jika jumlah file di Level 0 mencapai lima, pemadatan akan menggabungkan file-file tersebut. Secara default, ukuran maksimum file yang digabungkan adalah 64 MB. Jika ukuran file melebihi 64 MB, beberapa file akan dihasilkan setelah pemadatan. File yang digabungkan ditempatkan di Level 1, seperti yang ditunjukkan pada gambar berikut.

Pemadatan Penuh
Pemadatan otomatis hanya berlaku dalam level tertentu dan tidak menggabungkan file di seluruh level. Pemadatan penuh menggabungkan semua file di semua level. Secara default, ukuran maksimum file yang digabungkan adalah 64 MB. File yang digabungkan ditempatkan di level terakhir.
Batasan
Hanya Hologres V2.1 dan versi yang lebih baru yang memungkinkan Anda memicu pemadatan penuh secara manual. Jika versi instance Hologres Anda lebih lama dari V2.1, tingkatkan instance Hologres Anda secara manual melalui konsol Hologres atau bergabunglah dengan grup DingTalk Hologres untuk mengajukan permohonan peningkatan instance. Untuk informasi lebih lanjut tentang cara menaikkan versi instance Hologres secara manual, lihat Peningkatan Instance. Untuk informasi lebih lanjut tentang cara bergabung dengan grup DingTalk Hologres, lihat Dapatkan Dukungan Online untuk Hologres.
Anda hanya dapat memicu pemadatan penuh untuk tabel berorientasi kolom dan tabel hibrid baris-kolom.
Jika Anda melakukan pemadatan penuh pada tabel hibrid baris-kolom, pemadatan hanya dilakukan pada data yang disimpan dalam mode penyimpanan berorientasi kolom.
Catatan penggunaan
Skenario
Anda dapat memicu pemadatan penuh dalam skenario berikut untuk menggabungkan file kecil dan meningkatkan efisiensi kueri:
Sejumlah besar data diimpor dalam mode offline.
Operasi
DELETEatauUPDATEdilakukan berkali-kali.
CatatanPemadatan penuh membutuhkan sumber daya I/O dan CPU yang signifikan. Kami menyarankan Anda menjalankan pemadatan penuh selama jam-jam sepi operasi penulisan. Umumnya, pemadatan penuh memerlukan waktu 10 menit atau lebih.
Sintaks
SELECT hologres.hg_full_compact_table( '<schema_name.table_name>' [,'max_file_size_mb=<value>'] );Parameter
Parameter
Deskripsi
Diperlukan
Nilai Default
schema_name.table_name
Nama tabel tempat Anda ingin melakukan pemadatan penuh.
Ya
Tidak ada nilai default
max_file_size_mb
Ukuran maksimum file yang dihasilkan setelah full compaction dilakukan. Nilainya harus bilangan bulat positif dalam
MB. Kami merekomendasikan agar Anda mempertahankan nilai default.Jika Anda menurunkan nilai parameter ini, jumlah file data yang dihasilkan bertambah, dan kueri data melambat.
Tidak
64
Contoh
Lakukan full compaction pada tabel bernama
public.lineitem:SELECT hologres.hg_full_compact_table( 'public.lineitem');Lakukan full compaction pada tabel bernama
public.lineitem, dan atur ukuran file gabungan maksimum menjadi 256 MB:SELECT hologres.hg_full_compact_table( 'public.lineitem', 'max_file_size_mb=256' );
Gunakan Serverless Computing untuk menjalankan compaction
Dukungan Serverless Computing untuk compaction setelah impor data adalah sebagai berikut:
Pada versi sebelum V3.1.11, ketika Anda menjalankan tugas impor data menggunakan Serverless Computing, tugas compaction asinkron latar belakang masih dijalankan menggunakan sumber daya lokal instance saat ini.
Pada V3.1.11 dan versi lebih baru, ketika Anda menjalankan tugas impor data menggunakan Serverless Computing, Anda dapat melakukan compaction sinkron pada file data yang baru diimpor menggunakan sumber daya serverless, tanpa mengonsumsi sumber daya lokal instance saat ini. Fitur ini sedikit meningkatkan durasi impor data, tetapi secara signifikan meningkatkan stabilitas instance. Perhatikan poin-poin berikut:
Untuk menggunakan fitur ini, Anda harus mengaktifkan parameter GUC
hg_serverless_computing_run_compaction_before_commit_bulk_load.Compaction sinkron hanya didukung untuk file data yang baru diimpor. Jika sebuah tabel berisi file lama yang perlu dibersihkan karena kedaluwarsa TTL, compaction masih akan dijalankan secara asinkron menggunakan sumber daya lokal instance saat ini.
Compaction sinkron hanya mendukung impor data ke penyimpanan panas (penyimpanan standar) dan tidak mendukung penyimpanan dingin (penyimpanan akses jarang).