Topik ini menjelaskan cara menggunakan Mesin penyimpanan Beam.
Catatan penggunaan
Hanya instans AnalyticDB for PostgreSQL V7.0.x dalam mode penyimpanan elastis yang mendukung Mesin penyimpanan Beam.
Mesin penyimpanan Beam tersedia secara resmi setelah pratinjau publik selesai pada AnalyticDB for PostgreSQL V7.0.6.2 dalam mode penyimpanan elastis. Versi ini memperbaiki masalah yang terjadi selama pratinjau publik. Kami menyarankan Anda memperbarui instans AnalyticDB for PostgreSQL ke V7.0.6.2 atau versi yang lebih baru.
Membuat tabel Beam
Untuk membuat tabel dengan mesin Beam, tentukan klausa USING beam dalam pernyataan `CREATE TABLE`. Contoh berikut membuat tabel Beam bernama test.
CREATE TABLE test(a INT, b INT)
USING beam
DISTRIBUTED BY (a);Secara default, tabel Beam menggunakan kompresi LZ4 level 9 untuk semua kolom.
Menentukan kunci pengurutan
Anda dapat menentukan kunci pengurutan untuk mendefinisikan cara data diagregasi secara fisik. Beam mengumpulkan nilai maksimum (Max) dan minimum (Min) untuk kolom kunci pengurutan dan kolom kunci primer yang ditentukan. Hal ini mempercepat kueri yang berisi kondisi filter pada kunci pengurutan. Misalnya, jika suatu Pernyataan SQL berisi kondisi sale_date='20230715', pengurutan data berdasarkan kolom sale_date secara signifikan meningkatkan kinerja kueri.
Anda dapat menentukan satu atau beberapa kunci pengurutan dalam klausa ORDER BY. Beam secara otomatis mengurutkan ulang data di latar belakang berdasarkan kunci pengurutan yang ditentukan untuk optimalisasi.
Contoh
Buat tabel Beam yang berisi kunci pengurutan.
CREATE TABLE beam_example (
id integer,
name text,
ftime timestamp
)
USING beam
DISTRIBUTED BY (id)
ORDER BY(id);Tulis 10.000.000 baris data ke tabel Beam dan kueri data menggunakan kondisi filter kunci pengurutan.
INSERT INTO beam_example
SELECT r, md5((r*random())::text), now() + interval '1 seconds' *(r*random())::int
FROM generate_series(1,10000000)r;SELECT * FROM beam_example WHERE id = 100000;Menentukan algoritma kompresi
Beam mendukung berbagai algoritma kompresi, seperti ZSTD, LZ4, AUTO, dan GDICT. Anda dapat memilih algoritma kompresi sesuai kebutuhan.
Algoritma kompresi default:
Untuk instans AnalyticDB for PostgreSQL yang menjalankan kernel versi V7.1.1.4 atau lebih baru, kompresi AUTO Level 1 digunakan secara default.
Untuk instans AnalyticDB for PostgreSQL yang menjalankan kernel versi lebih lama dari V7.1.1.4, kompresi LZ4 Level 1 digunakan secara default.
ZSTD
ZSTD memberikan rasio kompresi yang lebih tinggi, tetapi kinerja kompresi dan dekompresi yang lebih rendah dibandingkan LZ4.
LZ4
LZ4 memberikan kinerja kompresi dan dekompresi yang tinggi dengan mengorbankan rasio kompresi.
AUTO
AUTO adalah algoritma kompresi adaptif yang dikembangkan sendiri oleh Mesin penyimpanan Beam. Untuk kolom numerik, Mesin penyimpanan Beam memberikan rasio kompresi yang lebih tinggi serta kinerja kompresi dan dekompresi yang lebih baik dibandingkan algoritma kompresi umum berdasarkan tata letak data. Untuk jenis kolom lainnya, Mesin penyimpanan Beam menggunakan LZ4 untuk mengompresi data.
GDICT
GDICT adalah algoritma kompresi encoding kamus global yang dikembangkan sendiri oleh Mesin penyimpanan Beam. GDICT memberikan rasio kompresi tinggi dan kinerja dekompresi tinggi untuk kolom dengan kardinalitas rendah yang memiliki kurang dari 256 nilai unik. Selain itu, GDICT menggunakan fitur penurunan kondisi dalam skenario tertentu untuk memberikan kinerja pemindaian hingga 100 kali lipat dibandingkan algoritma kompresi umum.
Contoh
Buat tabel Beam yang menggunakan kompresi ZSTD level 9.
CREATE TABLE beam_example (
id integer,
name text,
ftime timestamp
) USING beam
WITH(compresstype='zstd', compresslevel=9) ;Optimalisasi otomatis
Beberapa operasi tulis, perbarui, atau hapus pada tabel Beam dapat menghasilkan banyak data kedaluwarsa seiring waktu, yang menurunkan kinerja pemindaian. Optimalisasi otomatis adalah proses latar belakang yang mengoptimalkan data Anda. Proses ini secara otomatis mereklaim data kedaluwarsa, menggabungkan file-file kecil, dan mengagregasi data berdasarkan kunci pengurutan untuk mempertahankan kinerja kueri. Proses ini berjalan secara otomatis secara default. Anda juga dapat memicu proses optimalisasi secara manual dengan menjalankan perintah OPTIMIZE beam_example;.